[原]05-Python3实用教程-数据结构列表

列表

是一种有序的集合,可以随时添加和删除其中的元素。列表的索引从0开始。 一个列表可以包含不同类型的元素,但通常使用时各个元素类型相同:

>>> seq_list = [1, 3, 5, 6, 8, 10]
>>> len(seq_list)
6
>>> seq_list[0]
1
>>> seq_list[-1]
10
>>> seq_list[:]
[1, 3, 5, 6, 8, 10]

所有的切片操作都返回一个新列表,是一个(浅)拷贝过程。改变新列表的值,不会影响原列表的值:

>>> seq_list2 = seq_list[2:4]
>>> seq_list2
[5, 6]
>>> seq_list2[1] = 44
>>> seq_list2
[5, 44]
>>> seq_list
[1, 3, 5, 6, 8, 10]

列表支持拼接操作(+),返回一个新列表:

>>> seq_list + [12, 13, 14]
[1, 3, 5, 6, 8, 10, 12, 13, 14]
>>> seq_list
[1, 3, 5, 6, 8, 10]

给切片赋值也是可以的,这样甚至可以改变列表大小,或者把列表整个清空:

>>> seq_list[2:4] = ['a', 'b']
>>> seq_list
[1, 3, 'a', 'b', 8, 10]
>>> seq_list[2:4] = []
>>> seq_list
[1, 3, 8, 10]
>>> seq_list[:] = []
>>> seq_list
[]

常用方法

append(x),在末尾添加一个元素

>>> seq_list = [1, 3, 5, 6, 8, 10]
>>> seq_list.append('a')
>>> seq_list
[1, 3, 5, 6, 8, 10, 'a']

extend(iterable),使用可迭代对象中的所有元素来扩展列表

>>> seq_list.extend([11, 22, 33])
>>> seq_list
[1, 3, 5, 6, 8, 10, 'a', 11, 22, 33]

insert(i, x),在指定位置插入一个元素

>>> seq_list.insert(2, 333)
>>> seq_list
[1, 3, 333, 5, 6, 8, 10, 'a', 11, 22, 33]

remove(x),移除列表中第一个x元素,没有会报错

>>> seq_list = [1, 3, 5, 6, 8, 10, 3]
>>> seq_list
[1, 3, 5, 6, 8, 10, 3]
>>> seq_list.remove(3)
>>> seq_list
[1, 5, 6, 8, 10, 3]
>>> seq_list.remove(55)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>> seq_list
[1, 5, 6, 8, 10, 3]

pop([i]),删除列表中给定位置的元素并返回它,没有参数则删除最后一个

>>> seq_list
[1, 5, 6, 8, 10, 3]
>>> seq_list.pop()
3
>>> seq_list
[1, 5, 6, 8, 10]
>>> seq_list.pop(2)
6
>>> seq_list
[1, 5, 8, 10]

clear(),移除列表中的所有元素

>>> seq_list
[1, 5, 8, 10]
>>> seq_list.clear()
>>> seq_list
[]

index(x, start, end),查询第一个x元素的索引,start,end是可选参数,用于将搜索限制为列表的特定子序列,找不到会报错。

>>> seq_list = [1, 3, 5, 6, 8, 10, 3]
>>> seq_list.index(11)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 11 is not in list
>>> seq_list.index(3)
1
>>> seq_list.index(8, 3)
4

count(x),返回元素x在列表中出现的次数

>>> seq_list.count(3)
2
>>> seq_list.count(1)
1

reverse(),翻转列表中的元素

>>> seq_list.reverse()
>>> seq_list
[3, 10, 8, 6, 5, 3, 1]

copy(),返回列表的一个浅拷贝

>>> seq_list
[3, 10, 8, 6, 5, 3, 1]
>>> seq2_list = seq_list.copy()
>>> seq2_list 
[3, 10, 8, 6, 5, 3, 1]
>>> seq2_list[2] = 111
>>> seq2_list
[3, 10, 111, 6, 5, 3, 1]
>>> seq_list
[3, 10, 8, 6, 5, 3, 1] 

del(i),删除列表元素

>>> seq_list
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>>> del seq_list[2]
>>> seq_list
[0, 2, 6, 8, 10, 12, 14, 16, 18]

列表的遍历

>>> seq_list = [1, 3, 5, 6, 8, 10, 3]
>>> for index in range(len(seq_list)):
...     print(index, seq_list[index])
... 
0 1
1 3
2 5
3 6
4 8
5 10
6 3
>>> for item in seq_list:
...     print(item)
... 
1
3
5
6
8
10
3
>>> for index, value in enumerate(seq_list):
...     print(index, value)
... 
0 1
1 3
2 5
3 6
4 8
5 10
6 3

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标。

>>> enumerate(seq_list)
<enumerate object at 0x103443798>
>>> list(enumerate(seq_list))
[(0, 1), (1, 3), (2, 5), (3, 6), (4, 8), (5, 10), (6, 3)]
分享 提问
comments powered by Disqus