Phthon中的推导式相关知识

137 阅读2分钟

这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战

1、推导式

  • 列表推导式

    • 格式:[要插入的值 for 临时变量 in 数据序列 if 条件]
  • 集合推导式

    • 格式:{要插入的值 for 临时变量 in 数据序列 if 条件}
  • 字典推导式

    • 格式:{要插入的键:要插入的值 for 临时变量 in 数据序列 if 条件 }
  • 没有元组推导式和字符串推导式,因为其内部元素无法被修改

# 推导式:通过一定的规则快速构建数据序列
# 列表推导式
# 获取从0 到9的数据序列
# while
list1 = []
i = 0
while i < 10:
    list1.append(i)
    i += 1
print(list1)
​
# for
list2 = []
for i in range(10):
    list2.append(i)
print(list2)
​
# 推导式
# 格式: [要插入列表的表达式 for 临时变量 in 数据序列]
list3 = [i for i in range(10)]
print(list3)
​
# 使用推导式,创建一个从1-100的偶数的数据序列# for
list4 = []
for i in range(1, 101):
    if i % 2 == 0:
        list4.append(i)
​
print(list4)
​
# 推导式
# 格式: [要插入列表的表达式 for 临时变量 in 数据序列 if  条件]
list5 = [i for i in range(1, 101) if i % 2 == 0]
print(list5)
​
# 练习:
# 用推导式进行九九乘法表的生成,将所有的算式放入列表中
list6 = []
for i in range(1, 10):
    for j in range(1, i + 1):
        list6.append(f'{j} * {i} = {j * i}')
​
print(list6)
​
# 改写为推导式:
list7 = [f'{j} * {i} = {j * i}' for i in range(1, 10) for j in range(1, i + 1)]
print(list7)
​
# 集合推导式
# 集合推导式和列表推导式完全一致,只不过使用推导式时,外层用{}包裹,并且在序列中会去重
set1 = {i for i in range(10)}
print(set1)
​
# 获取从1-10 的偶数集合
set2 = {i for i in range(1, 11) if i % 2 == 0}
print(set2)
​
# 字典推导式
keys = ['name', 'age', 'gender', 'id']
values = ['xiaoming', 18, '女', '001']
​
# 需求想将key 和value以一对应,形成一个字典
dict1 = {}
for i in range(len(keys)):
    dict1[keys[i]] = values[i]
​
print(dict1)
​
# 改写推导式
# 格式:{要插入的键:要插入的值  for 临时变量 in 数据序列  if 条件}
dict2 = {keys[i]: values[i] for i in range(len(keys))}
print(dict2)
​
# 所有的推导式都可以使用for循环改写,所以我们进行推导式的时候先不要急于求成,多改写几次就不用再改写了直接可以写出推导式