可以将列表和元组当成普通的“数组”,它能保存任意数量任意类型的Python 对象。和数
组一样,通过从0 开始的数字索引访问元素,但是列表和元组可以存储不同类型的对象。
列表和元组有几处重要的区别。列表元素用中括号( [ ])包裹,元素的个数及元素的值可
以改变。元组元素用小括号(( ))包裹,不可以更改(尽管他们的内容可以)。元组可以看成是
只读的列表。通过切片运算( [ ] 和 [ : ] )可以得到子集(子集还是列表或者元组),这一点与字符串的使用方法一样。
列表:可以被修改,可以增长可以缩短,也可以嵌套。
>>> list1 = [1, 'nihao', 3.14, 50, 1000]
>>> list1[3]
50
>>> list1.append(2) #append()方法只能在末尾追加
>>> list1
[1, 'nihao', 3.14, 50, 1000, 2]
>>> list1
['nihao', 3.14, 50, 100, 2, '父亲', '5']
>>> list1.insert(0, 23) #insert(n, x)可以在任意位置追加元素,插在第n号元素之后,索引值n超过原列表值时,直接追加在末尾
>>> list1
[23, 'nihao', 3.14, 50, 100, 2, '父亲', '5']
>>> list1.insert(8, 1000)
>>> list1
[23, 'nihao', 3.14, 50, 100, 2, '父亲', '5', 1000]
>>> list1.insert(11, 10000)
以上这两种操作都是单个元素插入,当我们需要将大量数据放在列表末尾的时候,我们就需要extend()方法了。
>>> list1
[23, 3.14, 2, '5']
>>> list1.extend(['邓艾', 9999])
>>> list1
[23, 3.14, 2, '5', '邓艾', 9999]
>>> list1.extend(10)
Traceback (most recent call last):
File "<pyshell#87>", line 1, in <module>
list1.extend(10)
TypeError: 'int' object is not iterable
>>> list1[2:4]
[3.14, 50]
>>> list1[4] = 100
>>> list1
[1, 'nihao', 3.14, 50, 100, 2]
>>> len(list1)
6
>>> list1[6] =
KeyboardInterrupt
>>> list1[6] = '小甲鱼'
Traceback (most recent call last):
File "<pyshell#41>", line 1, in <module>
list1[6] = '小甲鱼'
IndexError: list assignment index out of range
删除列表中的元素的方法:
>>> list1
[23, 'nihao', 3.14, 2, '父亲', '5']
>>> del list1[1] #知道位置,不知道内容,用del
>>> list1
[23, 3.14, 2, '父亲', '5']
>>> list1.remove('父亲') #知道内容,但是不知道位置,用remove()方法
>>> list1
[23, 3.14, 2, '5']
>>> member
['a', 'ATG', 3.14, 500]
>>> member.pop(0) #pop()方法也可用来删除元素,默认取出最后一个元素并返回。加上参数(即列表索引值)时,取出对应元素。
'a'
>>> member
['ATG', 3.14, 500]
>>> member.pop()
500
>>> member
['ATG', 3.14]
>>> list2 = member.pop()
>>> list2
3.14
>>> member
['ATG']
字符串可以用‘+’拼接,用‘*’进行复制若干次。列表同样也可以。
>>> list5 = [11, [23,34]]
>>> 23 in list5
False
>>> [23, 34] in list5 ##in 和 not in只能判断一个层次的成员关系。
True
>>> 34 in list5[1]
True
访问列表中列表中的值,应该如何访问:用两个方括号
>>> list5[1][1]
34
list.index()返回元素的索引值;list.sort()按大小顺序排列列表list.reverse()反向排序;list.count()计算列表中制定元素出现的次数。要拷贝列表,使用分片的方式
>>> listA = list3[:]
>>> listA
[456, 456, 456, 345, 345, 345, 234, 234, 234, 123, 123, 123]
>>> list3.sort()
>>> list3
[123, 123, 123, 234, 234, 234, 345, 345, 345, 456, 456, 456]
>>> listA
[456, 456, 456, 345, 345, 345, 234, 234, 234, 123, 123, 123]
元组:跟列表一样,元组也可以向字符串那样使用'+','*',也可以切片和利用索引值访问元组。
>>> Tuple = ('robots', 77, 99,9, "try")
>>> Tuple
('robots', 77, 99, 9, 'try')
>>> len(Tuple)
5
>>> Tuple[4:]
('try',)
>>> Tuple[:4]
('robots', 77, 99, 9)
>>> Tuple[1]
77
>>> Tuple[1] = 4
Traceback (most recent call last):
File "<pyshell#47>", line 1, in <module>
Tuple[1] = 4
TypeError: 'tuple' object does not support item assignment
>>> Tuple.append(2)
Traceback (most recent call last):
File "<pyshell#48>", line 1, in <module>
Tuple.append(2)
AttributeError: 'tuple' object has no attribute 'append'
利用切片将元组切片之后,然后加上新的元素,间接更新一个元组或者利用切片间接删除一个元素。
当创建的元组中只有一个元素时,要在这个元素后面加上',',以确保它是一个元组。
>>> tuple1 = (9)
>>> type(tuple1)
<class 'int'>
>>> tuple1 = (9,) ##可以看出元组的关键符号是',',而不是小括号。但是列表的关键就是中括号
>>> type(tuple1)
<class 'tuple'>
>>> tuple1 = 1, 2, 3
>>> type(tuple1)
<class 'tuple'>
连接操作符、重复操作符、成员关系操作符、逻辑操作符都可以用在元组和列表上。