Python学习笔记(四)

Python学习笔记(四)

列表、元组和字典

  • Python学习笔记(四)
  • 一. 序列
    • 列表
    • 元组
    • 相关操作
    • 序列封包和序列解包
  • 二. 列表相关操作
    • 添加元素
    • 删除元素
    • 修改元素
    • 列表的常用方法
  • 三. 字典

一. 序列

序列指的是一种包含多项数据的数据结构,序列包含的多个数据项按顺序排列,可通过索引来访问

元组是不可变的,元组一旦构建,就不能修改元组所包含的成员;列表是可变的,程序可以修改列表所包含的元素

元组支持的操作,列表基本上都支持;列表支持对元素的修改,而元组则不支持

大部分时候都可使用列表来代替元组,如果不需要修改列表所包含的元素,那么使用元组代替列表会更安全

列表

list() 函数来创建列表,可用于将元组、区间(range)等对象转换为列表

a_list = [ele1,ele2,ele3,...]
创建列表使用方括号,括号中列出元素,元素之间以英文逗号隔开

元组

tuple() 函数来创建元组,可用于将列表、区间(range)等对象转换为元组

a_tuple = (ele1,ele2,ele3,...)
创建元组使用圆括号,括号中列出元素,元素之间以英文逗号隔开

相关操作

列表和元组切片(slice[start : end : step]
start、end 都可使用正数或负数,step表示步长,step使用负数没有意义
该语法表示从 start 索引的元素开始(包含),到 end 索引的元素结束(不包含)的所有元素

>>>a_tuple = ('you', 10, 'chan', 16 ,'will')
>>>print(a_tuple[1:3]) 
>>>print(a_tuple[1:3:2]) 
(10, 'chan')
(10,)
加法
列表只能和列表相加;元组只能和元组相加

sum_tuple = a_tuple + b_tuple
sum_list = a_list + b_list
乘法
列表和元组乘法的意义就是把它们包含的元素重复

>>>a_tuple = ('you', 10, 'chan', 16 ,'will')
>>>print(a_tuple*2)
('you', 10, 'chan', 16, 'will', 'you', 10, 'chan', 16, 'will')

*为了表示只有一个元素的元组,必须在唯一的元组元素之后添加英文逗号

in 运算符
用于判断列表或元组是否包含某个元素

>>>print(20 in a_tuple)
False
长度、最大值和最小值
len()max()min() 来获取元组或列表的长度、最大值和最小值

计算最大值(依次比较每个字符的ASCII码值,先比较第一个字符,若相同,继续比较第二个字符,以此类推) 
26个小写字母的ASCII码为97~122;26个大写字母的ASCII码为65~90

max(a_tuple) min(a_tuple) len(a_tuple)

序列封包和序列解包

  • 程序把多个值赋给一个变量时,会自动将多个值封装成元组。被称为序列封包(Sequence Packing)
  • 程序允许将序列直接赋值给多个变量,此时序列的各元素会被依次赋值给每个变量(序列的元素个数和变量个数相等)。被称为序列解包(Sequence Unpacking)
sp = 10, 20, 30 #序列封包:将10、20、30封装成元组后赋值给sp

>>>a_tuple = (1,2,3,4,5)
>>>a, b, c, d, e = a_tuple # 序列解包: 将a_tuple元组的各元素依次赋值给a、b、c、d、e变量
>>>print(a, b, c, d, e )
1 2 3 4 5

在赋值中同时运用了序列封包和序列解包机制,就可以让赋值运算符支持同时将多个值赋给多个变量
在序列解包时也可以只解出部分变量,剩下的依然使用列表变量保存
Python允许在左边被赋值的变量之前添加“*”,那么该变量就代表一个列表,可以保存多个集合元素

first, *middle, last = (1,2,3,4,5)
first保存第一个元素,last保存最后一个元素,middle保存中间剩下的元素

二. 列表相关操作

添加元素

append() 
用于在列表的末尾追加元素

listname.append(obj)
listname:要添加元素的列表;obj 到添加到列表末尾的数据,可以是单个元素,也可以是列表、元组等

>>>a_list = ['you', 'chan', 'will']
>>>a_tuple = ('10', '16')
>>>a_list.append(a_tuple)
>>>print(a_list)
['you', 'chan', 'will', ('10', '16')]
当给 append() 方法传递列表或者元组时,会将它们视为一个整体,作为一个元素添加到列表中,从而形成包含列表和元组的新列表
extend()
不会把列表或者元祖视为一个整体,而是把它们包含的元素逐个添加到列表中

listname.extend(obj)
obj不能是单个的数字

>>>a_list = ['you', 'chan', 'will']
>>>a_tuple = ('10', '16')
>>>a_list.extend(a_tuple)
>>>print(a_list)
['you', 'chan', 'will', '10', '16']
insert()
在列表中间某个位置插入元素

listname.insert(index , obj)
index 表示指定位置的索引值,当插入列表或者元组时,insert() 会将它们视为一个整体,作为一个元素插入到列表中

>>>a_list = ['you', 'chan', 'will']
>>>a_tuple = ('10', '16')
>>>a_list.insert(1,a_tuple)
>>>print(a_list)
['you', ('10', '16'), 'chan', 'will']

删除元素

del:根据索引值删除元素

del listname[index]
listname 表示列表名称,index 表示元素的索引值

del listname[start : end]
start 表示起始索引,end 表示结束索引
del 会删除从索引 start 到 end 之间的元素,不包括 end 位置的元素
pop():根据索引值删除元素

listname.pop(index)
如果不写 index 参数,默认会删除列表中的最后一个元素

>>>a_list = ['you', 'chan', 'will']
>>>print(a_list.pop())
will
remove():根据元素值进行删除
只会删除第一个和指定值相同的元素,必须保证该元素是存在的,否则会引发 ValueError 错误

listname.remove(index)
在使用 remove() 删除元素时最好提前判断一下
clear():删除列表所有元素
用来删除列表的所有元素,清空列表

修改元素

修改单个元素

>>>a_list = ['you', 'chan', 'will']
>>>a_list[2] = 1016  #使用正数索引
>>>a_list[-1] = 1016  #使用负数索引
>>> print(a_list)
['you', 'chan', 1016]
修改一组元素
通过切片给一组元素赋值
如果不指定步长(step),就不要求新赋值的元素个数与原来的元素个数相同,可以为列表添加元素,也可以为列表删除元素

>>>a_list = ['1', '2', '3','4','5','6']
>>>a_list[1: 3] = [10, 16]
>>>print(a_list)
['1', 10, 16, '4', '5', '6']

>>>a_list[3: 3] = [10, 16]
>>>print(a_list)
['1', '2', '3', 10, 16, '4', '5', '6']
如果对空切片赋值,就相当于插入一组新的元素

>>>a_list[2: 4] = "XYZ"
>>>print(a_list)
['1', '2', 'X', 'Y', 'Z', '5', '6']
如果使用字符串赋值,会自动把字符串转换成序列,其中的每个字符都是一个元素

使用切片时可以指定步长(step),要求所赋值的新元素的个数与原有元素的个数相同

列表的常用方法

遍历
for i in range(len(a_list)):
	print(a_list[i])
排序
a_list = ['1', '2', '3','4','5','6']
a_list.sort()  #正序
a_list.sort(reverse=True)  #倒序
返回某个元素的下标
a_list.index('2')

三. 字典

字典是一种常用的数据结构,用于存放具有映射关系的数据
字典相当于保存了两组数据,其中一组数据是关键数据,被称为 key;另一组数据可通过 key 来访问,被称为 value,需要通过 key 来访问 value,字典中的 key 不允许重复

可使用花括号语法来创建字典,也可使用dict()函数来创建字典
使用花括号语法创建字典时,花括号中应包含多个key-value对
key与value之间用英文冒号隔开;多个key-value对之间用英文逗号隔开

>>>a_dict = {
     'a': 1, 'b': 2, 'c': 3}dict()函数创建字典时,可以传入多个列表或元组参数作为 key-value 对,每个列表或元组将被当成一个 key-value 对,这些列表或元组都只能包含两个元素
如果不为dict()函数传入任何参数,则代表创建一个空的字典

>>>a_dict = dict(a = 111, b = 222)
>>>print(a_dict) 
{
     'b': 222, 'a': 111}
通过dict()指定关键字参数创建字典,此时字典的key不允许使用表达式
上面在创建字典时key直接写 a、b,不需要将它们放在引号中

你可能感兴趣的:(Python,Note,python)