列表数据类型及元组,列表和元且可以包含多个值,可以用它们将数据安排成层次结构。
4.1 列表数据类型
列表是一个值,包含多个字构成的序列。如:
['cat', 'bat', 'rat','elephant'] [1, 2, 4] ['hello', 3.14, True, None, 42]
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam
['cat', 'bat', 'rat', 'elephant']
用下标取得列表中的单个值,下标从0开始,如spam[0]='cat', spam[3]='elephant'
负数下标: spam[-1]='elephant'
利用切片取得子列表:spam[1:4],在一个切片中,第一个整数是切片开始处的下标,第二个整数是切片结束处的下标。切片向上增长,直至第二个下标的值,但不包括它。spam[1:4] # ['bat', 'rat', 'elephant'] spam[0:3] #['cat', 'bat', 'rat']
用len()取列表长度 len(spam) #4
用下标改变列表中的值: spam #['cat', 'bat', 'rat', 'elephant'] spam[1]='tiger' #['cat', 'tiger', 'rat', 'elephant']
列表连接: [1,2,3] + ['a',b','c'] #[1,2.3,'a','b','c']
列表复制:[1,2,3] * 4 # [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
用del语句从列表中删除值: del spam[2] # ['cat', 'bat', 'elephant']
列表用于循环: for i in ranage(len(spam)):
print(spam[i])
in 和 not in 操作符: 'dog' in spam # False
'dog' not in spam #True
多重赋值技巧: cat = ['fat', 'black', 'loud']
size, color, dispostion = cat
变量数的数目和列表的长度必须严格相等,否则出错。
增强赋值操作: spam = 42; spam += 1 #43
列表的方法:
1) 用index()方未能在列表中查找值, 该值存在于列表中,返回它的下标,否则,就报valueError错误。
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>>spam.index('bat') # 1
2)用append()和insert()方法在列表中添加值,没有返回值,返回值为None
append()添加到列表末尾, insert()在列表中任意下标处插入一值。
spam.append('tiger') # ['cat', 'bat', 'rat', 'elephant', 'tiger']
spam.insert(2, 'tiger') # ['cat', 'bat', 'tiger', 'rat', 'elephant']
3) 用remove()方法从列表中删除值
spam = ['cat', 'bat', 'tiger', 'rat', 'elephant']
spam.remove('rat') # ['cat', 'bat', 'tiger', 'elephant']
4) 用sort()方法将列表中的值排序
>>> spam
['cat', 'tiger', 'rat', 'elephant']
>>> spam.sort()
>>> spam
['cat', 'elephant', 'rat', 'tiger']
sort(reverse=True)表示按降序 ,sort(reverse=True)表示按升序
>>> spam.sort(reverse=True)
>>> spam
['tiger', 'rat', 'elephant', 'cat']
类似列表的类型: 字符串和元组
可变和不可变数据类型: 列表是“可变的“的数据类型, 可添加、删除和修改
字符串是”不可变的”数据类型,只能使用切片和连接构造一个“新的”字符串。
元组数据类型: 元组输入时用圆括号(),而不是方括号[]。使用方法与列表一样。
eggs = ('hello', 23, 0.5)
但元组与列表主要区别在于: 元组像字符串一样是不可变的。
用list()和tuple()函数来转换类型
tuple():将列表转换成元组
>>> tuple(['cat', 'dog', 5])
('cat', 'dog', 5)
list(): 将元组转换成列表
>>> list(('cat', 'dog', 5))
['cat', 'dog', 5]
copy模块的copy()和deepcopy()函数
需要import copy
copy.copy() : 可以用来复制列表或字典这样的可变值,而不是复制引用
copy.deepcopy(): 还未体现到与copy.copy()有什么区别? 希望知道的朋友告知,谢谢!