Python列表
列表的定义
在Python中,列表(list)是一种用于存储一系列有序项目的集合,这些项目可以是不同类型的数据(如整数、浮点数、字符串、甚至是其他列表等),并且列表是可变的,这也就意味着我们可以在列表成功创建后对其进行添加、删除、查找或修改其中的元素。
- 空列表
ls = []
- 包含整数的列表
int_list = [1, 2, 3, 4, 5]
- 包含不同类型的元素的列表
mixed_list = [1, "Hello", 3.14, True, [1, 2, 3]]
- 包含字符串的列表
string_list = ["apple", "banana", "cherry"]
列表的遍历
- 通过列表的索引进行遍历
ls = [10, 30, 25, 20, 15]
for index in range(0, len(ls)): #index即为列表ls的下标索引值
print(index, ls[index]) #输出得到列表元素对应的下标与值
- 直接获取列表元素
for item in ls: #item即为列表ls中的每一个元素
print(item)
- 通过枚举方法
for index, item in enumerate(ls): #通过enumerate分别将列表的索引值赋给index,索引对应的值赋给item
print(index, item)
列表的常见操作
- 类型转换
ls = list(range(1, 5))
ls = list('12ab5') # 将字符串转为列表
print(ls) # ['1', '2', 'a', 'b', '5']
- 查看列表内置方法
print(dir(ls))
- 列表的增、删、改、查
增加
ls.append('a') # 末尾追加
ls.extend([True, 11]) # 末尾 合并另外一个列表
ls = ls + [66, 88] # 末尾 合并另外一个列表
ls.insert(1, 'hello') # 指定索引插入
删除
ls.remove(11) # 指定删除值,没有返回值
print(ls)
ls.pop() # 末尾删除
print(ls)
print(ls.pop(1)) # 根据索引删除,并返回对应的值
print(ls)
ls.clear()
print(ls)
del ls # 删除变量
修改
ls[7] = False
查询
ls = [15, 30, 20, 35, 18, 20]
print(ls[2]) # 根据索引查询值
print(ls.index(20)) # 根据值查询对应的第一个索引
print(ls.count(20)) # 统计元素在列表中的个数
列表的其他操作
print(ls.copy())
ls.reverse() # 列表翻转
ls.sort(reverse=False) # 默认升序,原列表变化
ls.sort(reverse=True) # 降序,原列表变化
newls = sorted(ls, reverse=False) # 排序后的新列表,升序
newls = sorted(ls, reverse=True) # 排序后的新列表,降序
print(ls) # 原列表
注意
# sorted是python的内置函数,原列表不改变,会生成排序后的新列表
# sort是专属于列表的函数,原列表改变,没有返回值
列表的内置函数
列表基本内置函数包括:求和、求最大值和最小值、求列表的长度、列表排序、求列表平均值
print(sum(ls)) # 求和
print(max(ls)) # 最大值
print(min(ls)) # 最小值
print(len(ls)) # 列表长度
print(sorted(ls)) # 排序
print(sum(ls) / len(ls)) # 求列表平均值
列表的切片
"""
ls[start:end:step]
start:起始索引,默认为0,可以省略不写
end:结束索引(不闭合),可以省略不写,直接到首尾
step:步长,默认为1,可以省略不写
"""
ls = [0, 1, 2, 3, 4, 5, 6, 7]
print(ls[2:6:2]) # [2, 4]
print(ls[1:8:2]) # [1, 3, 5, 7]
print(ls[6:3:-1]) # [6, 5, 4]
print(ls[::-1]) # 切片翻转
print(ls[:5]) # 取前5个数据
print(ls[:len(ls) - 5 - 1:-1]) # 取后5个数据
# 切片替换,步长不为1,切片个数与替换个数一致
# ls[::2] = ['a', 'b', 'c', 'd']
ls[1:4] = [11, 22] # 连续片段 个数可以不一致
print(ls)
列表的运算
列表成员运算
ls = ['a', 'b']
print('a' in ls) # True
print('a' not in ls) # False
列表乘法运算
print(ls * 3) # ['a', 'b', 'a', 'b', 'a', 'b']
print(ls) # ['a', 'b']
列表加法运算
print(ls + ['c', 'd']) # ['a', 'b', 'c', 'd']
列表推导式
将列表数据取出来进行加工处理,形成新的列表
ls = [1, 2, 3, 4, 5]
print([item for item in ls])
print([item * item for item in ls]) # [1, 4, 9, 16, 25]
print([1 / item for item in ls])
取出列表中的偶数
print([item for item in ls if item % 2 == 0]) # [2, 4]
两个列表相加
ls1 = [1, 2, 3]
ls2 = [10, 20, 30]
# [11, 21, 31, 12, 22, 32, 13, 23, 33]
print([item1 + item2 for item1 in ls1 for item2 in ls2])
两个列表同位相加
ls = [ls1[index1] + ls2[index2] for index1 in range(len(ls1)) for index2 in range(len(ls2)) if index1 == index2]
print(ls) # [11, 22, 33]
_ 代表一个模糊的需要被替换的值
print([random.randint(100, 1000) for _ in range(10)]) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
使用列表推导式快速生成一个1 - 100列表且元素不能被3整除
print([i for i in range(1, 101) if i % 3 != 0])
多维列表
列表中嵌套这多个列表,如:
ls=[[1,2],[3,4]]
或
lss = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
都属于二维列表
lss = [['a', 'b'], [1, 2, 3], [True, False]]
print(lss[0][1]) # b
print(lss[2][0]) # True
二维列表的遍历
for ls in lss:
for item in ls:
print(item, end=' ')
print()
print()
for i in range(len(lss)):
for j in range(len(lss[i])):
print(lss[i][j], end=' ')
print()
‘’’
列表转置:行转列,列转行
[1,2,3
4,5,6
7,8,9]转为
[1,4,7
2,5,8
3,6,9]
for i in range(len(lss)):
for j in range(len(lss[i])):
if i < j:
lss[i][j], lss[j][i] = lss[j][i], lss[i][j]
print(lss)