说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在实际的编程中往往有许多数据,我们需要将这一系列数据放在一起。Python 提供元组 (tuple)、字典 (dict)、集合 (set) 这几种类型。其中使用最广泛的就是列表。
列表是用方括号组织起来,每个元素用逗号隔开,每个具体的元素可以是任意类型的内容,通常类型是相同的,但也可以与列表中其他元素类型不相同。
如以下案例:
x = [] # 空列表
x = [1, 2, 3, 4, 5]
x = ['a', 'b', 'c']
x = ['a', 1.5, True, [2, 3, 4]] # 各种类型混杂
type(x) # list 类型检测
可以将可迭代的内容转换成列表:
# 字符串
y = '1345'
list(y) # ['1', '3', '4', '5'] 将字符串转换成列表
# 元组
z = ('a', 'b', 'c')
list(z) # ['a', 'b', 'c'] 将元组转换成列表
# 字典
d = {'Name': 'Tom', 'Age': 7, 'Class': 'First'}
list(d) # ['Name', 'Age', 'Class'] 字典 key 转成列表
list(d.values()) # ['Tom', 7, 'First'] 字典 value 转成列表
# 字典键值对(一个元组)转成列表
list(d.items()) # [('Name', 'Tom'), ('Age', 7), ('Class', 'First')]
列表的索引读取(列表切片)和字符串的一致。
var = ['a', 'b', 'c', 'd', 'e', 'f']
# 按索引取部分内容, 索引从0开始, 左必须小于右
var[0] # 'a'
# 从右开始索引从 -1 开始
var[-1] # 'f'
var[-3:-1] # ['d', 'e']
var[1:5] # ['b', 'c', 'd', 'e']
var[3:] # ['d', 'e', 'f'](前后省略按开头结尾)
var[:] # ['a', 'b', 'c', 'd', 'e', 'f'](相当于复制)
var[0:5:2] # ['a', 'c', 'e'](2为步长,2的倍数取)
var[1:7:3] # ['b', 'e']
var[::-1] # ['f', 'e', 'd', 'c', 'b', 'a'] 实现反转功能
列表中的列表或者元组的索引读取
x = ['a', 1.5, True, [2, 3, 4]] # 各种类型混杂
x[-1][2] # 2 先取到内部的列表元素,再按正常的列表进行切片
列表支持列表和列表相加,也支持列表和整数相乘,也支持存在检测:
['a', 'b'] + ['c', 'd'] # ['a', 'b', 'c', 'd'] 拼接
['a', 'b'] * 2 # ['a', 'b', 'a', 'b''] 复制
'a' in ['a', 'b'] # True 指定元素在列表里
常用方法:
a = [1, 2, 3]
len(a) # 3 元素个数
max(a) # 3 最大值
min(a) # 1 最小值
sum(a) # 6 求和
a.index(2) # 1 指定元素位置
a.count(1) # 1 求元素的个数
for i in a: print(i) # 迭代元素
sorted(a) # 返回一个排序的列表,但不改变原列表
any(a) # True 是否至少有一个元素为真
all(a) # True 是否所有元素为真
注意
以下有些操作不会返回结果,会将结果覆盖给原变量,需要打印才会显示。
增加删除操作:
a = [1, 2, 3]
a.append(4) # a: [1, 2, 3, 4] 增加一个元素
a.pop() # 每执行一次删除最后一个元素
a.extend([9,8]) # a: [1, 2, 3, 9, 8] # 和其他列表合并
a.insert(1, 'a') # a: [1, 'a', 2, 3] 指定索引位插入元素
a.remove('a') # 删除第一个指定元素
a.clear() # [] 清空
排序:
a.reverse() # 反转顺序
a.sort() # 排序
a.sort(reverse=True) # 反序
a.sort(key=abs) # 传入函数关键字作为排序规则
更多细节详情:sort(),序列的通用操作可参见:Python 序列类型。
推导式就是用 for 循环结合 if 表达式生成一个列表,这是一个非常方便紧凑地定义一个列表的方式,可以大大减少代码量。
# 将一个可迭代的对象展开形成一个列表
[i for i in range(5)]
# [0, 1, 2, 3, 4]
# 可以将结果进行处理
['第'+str(i) for i in range(5)]
# ['第0', '第1', '第2', '第3', '第4']
# 可以进行条件筛选, 实现取偶数
[i for i in range(5) if i%2==0]
# 拆开字符, 过滤空格,全变成大写
[i.upper() for i in 'Hello world' if i != ' ']
# ['H', 'E', 'L', 'L', 'O', 'W', 'O', 'R', 'L', 'D']
# 对于复杂逻辑可以分行编写
[i.upper()
for i in 'Hello world'
if i != ' '
]
# 条件分支
data= ['good','bad','bad','good','bad']
[1 if x == 'good' else 0 for x in data]
# [1, 0, 0, 1, 0]
#取最大值,二维列表,利用大小判断,0,1当索引
[b, a][a > b]
更新时间:2023-09-08 13:25:09 标签:列表 python