-
关键词:list列表
-
摘要:list、列表、list列表、数据类型
目录
7、list.index() 定位某特定元素第一次在列表中出现的位置
一、概述
列表中元素的数据类型可以是任意类型(包括列表)或者是自定义的数据类型
>>> list = [12, "OK", True, [0, 3.14]]
>>> list
[12, "OK", True, [0, 3.14]]
可通过下标来访问列表中的对象并改变其值。通过下标访问时,并没有创建新列表
>>> list = [12, "OK", True, [0, 3.14]]
##访问单个对象
>>> list[1]
'OK'
##一次性访问多个对象,注意右侧为开
>>> list[1:4] ##注意,这里并没有创建切片
['OK', True, [0, 3.14]]
##改变对象的值
>>> list[0] = 11
>>> list
[11, "OK", True, [0, 3.14]]
二、列表操作
1、列表相加与重复
##两相加(更推荐使用list.extend()函数)
>>> list1 = [1, 2, 3]
>>> list2 = ["A", "B", "C"]
>>> list3 = list1 + list2
>>> list3
[1, 2, 3, 'A', 'B', ''C']
##重复
>>> list = [0, 1] * 3
>>> list
[0, 1, 0, 1, 0, 1]
2、slice切片
语法:list [start:stop:step]
- start 默认为0
- stop 开区间,默认为列表末尾
- step表示截取的步长,默认为1
- 使用slice切片会生成新列表,对切片的操作不再改变原列表值
>>> list = [12, "OK", True, [0, 3.14]]
>>> list1 = list[0:2]
>>> list1
[12, 'OK']
##修改切片值,原列表并不改变,说明切片为一个新列表
>>> list1 = [False]
>>> list
[12, 'OK', True, [0, 3.14]]
3、list.append() 末尾添加新元素
>>> list = [12, "OK", True, [0, 3.14]]
>>> list.append(0)
>>> list
[12, "OK", True, [0, 3.14], 0]
4、list.extend() 末尾添加新列表、元组
*列表相加更推荐这种方法
*extend()中的值只能是列表或元组,新列表被拆分为元素再加入list
>>> list1 = [1, 2, 3]
>>> list2 = [4, 5, 6]
>>> list1.extend(list2)
>>> list1
[1, 2, 3, 4, 5, 6]
5、list.insert() 在指定位置插入新元素
语法:list.insert(position,element)
- 参数不能省略
- 在 position 处插入新元素,原数据向后顺延。
- 新元素可为任意数据类型,若新元素为列表,列表不会被拆分。
>>> list = [1,2,3]
>>> list.insert(1,"A")
>>> list
[1, 'A', 2, 3]
>>> list.insert([True, False])
>>> list
[1, [True, False], 'A', 2, 3]
6、list.pop() 删除并返回指定位置元素
语法:list.pop(position)
- 若参数省略,则默认删除末尾元素
- list.pop() 返回值为被删除的元素
>>> list = [1, 2, 3, 4]
>>> list.pop()
4
>>> list.pop(0)
1
>>> list
[2, 3]
7、list.index() 定位某特定元素第一次在列表中出现的位置
语法:list.index(object, start, stop)
- 若不指定范围,则默认在整个列表中查找
- 若查找无结果则会报错
>>> list = [0, 1]
>>> list.index(1)
1
8、list.reverse() 倒叙原列表
*直接在原列表操作,不返回新的列表(无法用新列表承接)
>>> list = [0, 1]
>>> list.reverse()
>>> list
[1, 0]
##无法用新列表承接
>>> list1 = list.reverse()
>>> print(list1)
None
9、list.sort() 列表自动排序
语法:list1.sort(reverse = False)
- reverse 默认值为0,表示不倒叙(即默认升序排列)
>>> list = [2, 3, 1]
>>> list.sort()
>>> list
[1, 2, 3]
>>> list.sort(reverse = True)
>>> list
[3, 2, 1]
*列表其他常用操作
操作 | 作用 | 说明 |
---|---|---|
list.remove(元素) | 移除列表中的某个元素第一个匹配结果 | |
list.clear() | 清除列表中所有的数据,返回空列表 | |
list.count(元素) | 查找某元素在列表中出现的次数 | |
max(list)、min(list) | 获取列表中的最大值、最小值 | 对于字符串列表同样适用,但必须保证数据类型相同且可比较 |
list(元组) | 将元组转为列表 |
三、列表的拷贝
1、引用拷贝(赋值拷贝)
list1 = list
- 不创建新列表,共用同一块内存空间。
2、浅拷贝
list2 = list1.copy()
- 创建新列表,开辟新的内存空间。
- 只适用于一维列表,若对二维列表进行浅拷贝,则依然为引用拷贝。
3、深拷贝
impo copy
list1 = copy.deepcopy(list)
- 创建新列表,开辟新的内存空间。
- 完全内存拷贝,适用于多维列表。
四、遍历列表
1、for 循环遍历
for item in list :
- 从头开始,依次访问列表中的每一个元素,直到列表末尾
- item 为之后承接列表元素的对象,可任意命名
>>> list = [0, "OK", ["Pi",3.14], True]
>>> for item in list:
print(item)
0
OK
['Pi', 3.14]
True
2、while 循环遍历
i = 0
while i < len(list) :
do...
i += 1
>>> list = [0, 1, 2]
>>> i = 0
>>> while i < len(list):
list[i]
i += 1
0
1
2
五、二维列表
一维列表的所有操作,都可以在二维列表的子列表中进行,只需加角标即可
>>> list = [[0, 1],["A", "B", "C"], [True, False]]
>>> list[1]
['A', 'B', 'C']
>>> list[1][1]
'B'
>>> list[1].reverse()
>>> list[1]
['C', 'B', 'A']