文章目录
列表(list):用于存储任意数目、任意类型的数据集合
方法 | 要点 | 描述 |
---|---|---|
list.append(x) | 增加元素 | 将元素 x 增加到列表 list 尾部 |
list.extend(aList) | 增加元素 | 将列表 alist 所有元素加到列表 list 尾部 |
list.insert(index,x) | 增加元素 | 在列表 list 指定位置 index 处插入元素 x |
del a[i] | 删除指定下标 | 删除列表a下标为i的元素 |
list.remove(x) | 删除下标未知的元素 | 在列表 list 中删除首次出现的指定元素 x |
list.pop([index] = n - 1) | 删除指定下标的元素, 并获得返回值 | 删除并返回列表 list 指定为止 index 处的元素,默认是最后一个元素 |
list.clear() | 删除所有元素 | 删除列表所有元素,并不是删除列表对象 |
list.index(x) | 访问元素 | 返回第一个 x 的索引位置,若不存在 x 元素抛出异常 |
list.count(x) | 计数 | 返回指定元素 x 在列表 list 中出现的次数 |
len(list) | 列表长度 | 返回列表中包含元素的个数 |
list.reverse() | 翻转列表 | 所有元素原地翻转 |
list.sort(reverse=False) | 排序 原列表 | 所有元素原地排序 |
sorted(list) | 返回排序后的列表, 愿列表顺序不变 | 所有元素原地排序, 原列表顺序不变, 返回排好序的列表 |
list.copy() | 浅拷贝 | 返回列表对象的浅拷贝 |
列表的创建
直接创建一个不连续的列表
list = [1, 6,9, 10];
range()创建整数连续的列表
range()可以帮助我们非常方便的创建整数列表,这在开发中及其有用。语法格式为:range([start,] end [,step])start 参数:可选,表示起始数字。默认是 0end 参数:必选,表示结尾数字。step 参数:可选,表示步长,默认为 1python3 中 range()返回的是一个 range 对象,而不是列表。我们需要通过 list()方法将其转换成列表对象
>>> range(3, 56, 4)
range(3, 56, 4)
>>> list(range(3, 56, 2))
[3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55]
>>> list(range(50, 3, -2))
[50, 48, 46, 44, 42, 40, 38, 36, 34, 32, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4]
>>> list(range(5, -5, -2))
[5, 3, 1, -1, -3]
>>> list(range(-1, -5, -1))
[-1, -2, -3, -4]
创建一个空列表
list = []
index()
index()获得指定元素在列表中首次出现的索引
index()可以获取指定元素首次出现的索引位置。语法是:index(value,start,end])。其中start 和 end 指定了搜索的范围。
count()
获得指定元素在列表中出现的次数
len()
返回列表长度len()返回列表长度,即列表中包含元素的个数
in
判断列表中是否存在指定的元素,我们可以使用 count()方法,返回 0 则表示不存在,返回大于 0 则表示存在。但是,一般我们会使用更加简洁的 in 关键字来判断,直接返回 True或 False
切片
我们在前面学习字符串时,学习过字符串的切片操作,对于列表的切片操作和字符串类似。切片是 Python 序列及其重要的操作,适用于列表、元组、字符串等等。
列表的遍历
for obj in list1:
print(obj)
对列表元素的操作
value * 2 for value in list :
print(value)
list2 = [value * 2 for value in rang(1, 20)]
列表排序
修改原列表,不建新列表的排序
>>> c = [1, 4, 2, 76, 3, 2, 76, 43]
>>> c
[1, 4, 2, 76, 3, 2, 76, 43]
>>> c.sort()
>>> c
[1, 2, 2, 3, 4, 43, 76, 76]# 默认升序
>>> c.sort(reverse=True)
>>> c
[76, 76, 43, 4, 3, 2, 2, 1]# 降序排列
>>> import random
>>> c.shuffle(c) # 打乱顺序
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'shuffle'
>>> random.shuffle(c)
>>> c
[2, 43, 76, 1, 2, 3, 4, 76]
reversed
内置函数 reversed()也支持进行逆序排列,与列表对象 reverse()方法不同的是,内置函数reversed()不对原列表做任何修改,只是返回一个逆序排列的迭代器对象。
>>> a
[1, 'hello world', 1.5, 1, 4, 8, 9, 2, 4, 6, 0]
>>> reversed(a)
<list_reverseiterator object at 0x7f5b0d18a580>
>>> c = reversed(a)
>>> c
<list_reverseiterator object at 0x7f5b0d13d670>
>>> list(c)
[0, 6, 4, 2, 9, 8, 4, 1, 1.5, 'hello world', 1]
>>> list(c)
[]
>>> c
<list_reverseiterator object at 0x7f5b0d13d670>
>>> a
[1, 'hello world', 1.5, 1, 4, 8, 9, 2, 4, 6, 0]
我们打印输出 c 发现提示是:list_reverseiterator。也就是一个迭代对象。同时,我们使用
list©进行输出,发现只能使用一次。第一次输出了元素,第二次为空。那是因为迭代对象
在第一次时已经遍历结束了,第二次不能再使用
max 和 min
用于返回列表中最大和最小值
sum
对数值型列表的所有元素进行求和操作,对非数值型列表运算则会
二维列表
>>> stu = [
... ['张三',1, '上海'],
... ['李四', 2, '北京'],
... ['王五', 3, '成都']
... ]
>>> stu
[['张三', 1, '上海'], ['李四', 2, '北京'], ['王五', 3, '成都']]
>>> print(stu[1])
['李四', 2, '北京']
>>> print(stu[1][1], stu[1][2])
2 北京
>>>
列表的拷贝
list1 = list2, 元素相同地址相同, 同一个列表, 名字不同
list1= list2[:], 两个列表, 地址不同