py教程第9讲-元组和列表之一

可以将列表和元组当成普通的“数组”,它能保存任意数量任意类型的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)

 

>>> a
[12, 11, 23, 45, 619000.0]
>>> b
[2.0, [1, 'hello'], 13]
>>> a[2] = [23]  ###等号右边是一个列表,原列表中的该元素被替换成一个列表
>>> a
[12, 11, [23], 45, 619000.0]
>>> a[2] = 3.14  ###等号右边是一个数字,替换之后依旧是数字
>>> a
[12, 11, 3.14, 45, 619000.0]
>>> b[1][1] ###用两个分号访问和更新列表中列表的元素
'hello'
>>> b[1][1] = 'world'  ###元素依旧是字符串
>>> b
[2.0, [1, 'world'], 13]
>>> b[1][1] = [2, 'nihao'] ###元素替换成列表
>>> b
[2.0, [1, [2, 'nihao']], 13]

以上这两种操作都是单个元素插入,当我们需要将大量数据放在列表末尾的时候,我们就需要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']

 字符串可以用‘+’拼接,用‘*’进行复制若干次。列表同样也可以。

>>> list1 = [123, 345]
>>> list2 = [234, 456]
>>> list3 = list1 + list2
>>> list3
[123, 345, 234, 456]
>>> list3 *= 3
>>> list3
[123, 345, 234, 456, 123, 345, 234, 456, 123, 345, 234, 456]
>>> list4 = list2 * 2
>>> list4
[234, 456, 234, 456]
 
列表中可以包罗万象,甚至是列表。那么对于列表中的列表中的元素,其成员关系如何呢?

>>> 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'

利用切片将元组切片之后,然后加上新的元素,间接更新一个元组或者利用切片间接删除一个元素。

>>> tuple4
('小甲鱼', 'nihao', 10, '一刀', 1, 'China', 3.14)
>>> tuple5 = tuple4[:3] + ('戈多',) + tuple4[3:]  ##这里('戈多',)的逗号和括号都不能少
>>> tuple5
('小甲鱼', 'nihao', 10, '戈多', '一刀', 1, 'China', 3.14)
>>> tuple6 = tuple4[:2] + tuple4[4:]
>>> tuple6
('小甲鱼', 'nihao', 1, 'China', 3.14)

当创建的元组中只有一个元素时,要在这个元素后面加上',',以确保它是一个元组。

>>> tuple1 = (9)
>>> type(tuple1)
<class 'int'>
>>> tuple1 = (9,) ##可以看出元组的关键符号是',',而不是小括号。但是列表的关键就是中括号
>>> type(tuple1)
<class 'tuple'>
>>> tuple1 = 1, 2, 3
>>> type(tuple1)
<class 'tuple'>

连接操作符、重复操作符、成员关系操作符、逻辑操作符都可以用在元组和列表上。

原文地址:https://www.cnblogs.com/SWTwanzhu/p/6086243.html