公共操作与推导式

公共操作

操作方法 功能 描述 操作类型
+ 合并 将两个相同类型序列进行连接 字符串、列表、元组
* 复制 将里面的数据进行复制 字符串、列表、元组
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:一般使用较多的就是列表创建时的列表推导式,其他不推荐使用,代码可读性太差,只需要认识其表达含义即可。