10公共操作与推导式
公共操作与推导式
公共操作
操作方法 | 功能 | 描述 | 操作类型 |
---|---|---|---|
+ | 合并 | 将两个相同类型序列进行连接 | 字符串、列表、元组 |
* | 复制 | 将里面的数据进行复制 | 字符串、列表、元组 |
len | 获取序列长度 | 查看序列长度 | 字符串、列表、元组、字典,集合 |
reversed | 倒置 | 将容器里面的数据倒置 | 字符串、列表、元组、字典 |
max, min | 最大最小值 | 求容器数据的最大最小值 | 字符串、列表、元组、字典(key),集合 |
sum | 求和 | 将容器的数据求和 | 列表、元组、字典(key,其为字符串不能使用),集合 |
enumerate | 索引映射 | 将索引映射给容器里面的数据 | 列表、元组、或字符串 |
in, not in | 是否存在 | 判断数据是否存在于容器内 | 字符串、列表、元组、字典,集合 |
del | 删除 | 删除变量或者指定容器内数据 | 变量,容器里面的值 |
# reversed 倒置 将容器里面的数据倒置 字符串、列表、元组、字典
l1 = [1, 2, 3]
print(reversed(l1)) # <list_reverseiterator object at 0x0000022CE5786A40>
# 可以转为列表使用或者for循环使用
print(list(reversed(l1))) # [3, 2, 1]
for i in reversed(l1):
print(i)
# 3
# 2
# 1
# enumerate 索引映射 索引映射给容器里面的数据 列表、元组、或字符串
l1 = ['a', 'b', 'c']
# 转换为常见数据类型或for循环使用
print(list(enumerate(l1))) # [(0, 'a'), (1, 'b'), (2, 'c')]
for index, data in enumerate(l1, start=0): # start = 开始的索引值(不写也可,默认为0)
print(index, data)
# 0 a
# 1 b
# 2 c
容器类型的转换
- 所有数据类型都可以转换为字符串
- 转换为集合的时候需要注意数据的去重
- 字典数据转换是需要注意按照key还是value转换
# 字典转为列表
goods = {"name1": "可乐", "name2": "雪碧", "name3": "炸鸡"}
list1 = list(goods)
print(list1) # ['name1', 'name2', 'name3'] 所有的key值转换成了列表
list2 = list(goods.values())
print(list2) # ['可乐', '雪碧', '炸鸡'] 所有的value值转换成了列表
# 列表转字典
# 列表是不能够直接dict转换成字典
# 1)嵌套列表转字典
a = ['可乐', '雪碧']
b = ['3元', '5元']
c = [a, b] # 嵌套的形式转换
print(c) # [['可乐', '雪碧'], ['3元', '5元']]
print(dict(c)) # {'可乐': '雪碧', '3元': '5元'}
# ps:若列表长度不一致,会报错
# 2)使用zip()函数将列表转换成字典
a = ['可乐', '雪碧', '炸鸡']
b = ['3元', '5元']
c = zip(a, b)
print(c) # <zip object at 0x0000010FC5DD0040>
print(list(c)) # [('可乐', '3元'), ('雪碧', '5元')] 若长度不一样,多出的元素会不显示。
print(dict(c)) # {'可乐': '3元', '雪碧': '5元'} 若长度不一样,多出的元素会不显示。
列表推导式和三元表达式
# 列表推导式
# 代码简写,增加运行效率 减少代码可读性,难理解
# 普通写法
list_data = []
for i in range(10):
list_data.append(i)
print(list_data)
# 推导式写法 不是所有代码都可以简写为推导式,只有一种固定操作
# 创建列表,循环数据,添加数据(append),没有其他操作
list_data = [i for i in range(10)]
print(list_data)
# 普通写法
list_data = []
for i in range(10):
if i % 2 == 0:
list_data.append(i)
print(list_data)
# 创建列表,循环数据,添加数据位置永远在最前面 if(多个也可以,但不建议,可读性太差)放后面
list_data = [i for i in range(10) if i % 2 == 0]
print(list_data)
# 三元表达式
# 普通写法
age = 16
if age > 18:
print("成年")
else:
print("未成年")
# 三元表达式的写法
age = 16
print("成年") if age > 18 else print("未成年")
# 普通写法,if分支语句种含有赋值
age = 16
if age > 18:
data = 1
else:
data = 0
print(data)
# if分支语句种含有赋值的三元表达式写法
data = 1 if age > 18 else 0
print(data)
# 列表推导式与三元表达式
# 普通写法
list_data = []
for i in range(10):
if i % 2 == 0:
list_data.append(i)
else:
list_data.append((str(i)))
print(list_data)
# 列表推导式与三元表达式结合使用
list_data = [i if i % 2 == 0 else str(i) for i in range(10)]
print(list_data)
ps:一般使用较多的就是列表创建时的列表推导式,其他不推荐使用,代码可读性太差,只需要认识其表达含义即可。
本文来自博客园,作者:大-锅,转载请注明原文链接:https://www.cnblogs.com/dgxz99/p/17312219.html