"""======================= 推导式:推导式式用来快速方便的产生列表或者字典的表达式 ============================="""
'''
列表推导式:
列表 = [表达式 for 变量 in 序列]
产生一个新列表,列表中的元素的就是每次循环对应的表达式结果。
相当于:
列表 = []
for 变量 in 序列:
列表.append(表达式)
'''
list1 = [10 for x in range(3)]
print(list1)
list2 = [2 * x for x in range(1, 4)]
print(list2)
# 练习:写一个列表推导式,产生一个列表中的元素满足以下规律,str1, str2, str3 ... str99。
list3 = [0 + 3 * x for x in range(0, 34)]
list3[0] = 1
for n in list3:
print(f'str{n}', end=' ')
print()
list31 = [f'str{x1}' for x1 in range(0, 100, 3)]
print(list31)
'''
条件结构:
[表达式 for 变量 in 序列 if 条件语句]
相当于:
列表[]
for 变量 in 序列:
if 条件语句
列表.append(变量)
'''
list4 = [x for x in range(10) if x % 2]
print(list4) # [1, 3, 5, 7, 9]
list5 = [x for x in range(10) if x % 2 == 0]
print(list5) # [0, 2, 4, 6, 8]
# 如上练习:
list5 = [f'str{x}' for x in range(1, 100) if x == 1 or x % 3 == 0]
print(list5)
# 改进算法:
list6 = ["str1" if x == 0 else f'str{x}' for x in range(0, 100, 3)]
print(list6)
'''
(了解)
多重循环结构:
列表 = [表达式 for 变量1 in 序列1 for 变量2 序列2]
相当于:
列表 = []
for 变量1 in 序列1:
for 变量2 in 序列2:
列表.append(表达式)
多重循环判断结构:
列表 = [表达式 for 变量1 in 序列1 for 变量2 序列2 if 条件语句]
相当于:
列表 = []
for 变量1 in 序列1:
for 变量2 in 序列2:
if 条件语句:
列表.append(表达式)
'''
list8 = [f'{x}{y}' for x in range(3) for y in 'abc']
print(list8)
'''
集合推导式:
将列表推导式[]变成{}
'''
a1 = {x for x in 'hello'}
print(a1) # {'o', 'e', 'l', 'h'}
'''
元组和集合推导式:
元组 - 将列表推导式的[]变成tuple()
字典 - (表达式是键值对形式)将列表推导式的[]变成{};(表达式是有且只有两个元素的序列的时候)将列表推导式的[]变成dict()
'''
a2 = tuple(x*2 for x in 'hello')
print(a2) # ('hh', 'ee', 'll', 'll', 'oo')
a3 = {x: x*2 for x in 'hello'}
print(a3) # {'h': 'hh', 'e': 'ee', 'l': 'll', 'o': 'oo'}
a4 = dict((x, x*2) for x in 'hello')
print(a4) # {'h': 'hh', 'e': 'ee', 'l': 'll', 'o': 'oo'}
# 练习3:通过字典推导式交换一个字典的键和值。
# dic = {'a': 10, 'b': 20, 'c': 30} -> {10: 'a', 20:'b', 30: 'c'}
dic = {'a': 10, 'b': 20, 'c': 30}
zd = {dic[key]: key for key in dic}
print(zd)
# 练习:通过字典推导式交换一个字典的键和值,如果值是可变的在新的字典中不交换。dic = {'a': 10, 'b': 20, 'c': 30, 'd': [10, 20]}
dic1 = {'a': 10, 'b': 20, 'c': 30, 'd': [5, 6]}
# dic2 = dict((key, dic1[key]) if type(dic1[key]) in (list, set, dict) else (dic1[key], key) for key in dic1)
# print(dic2)
day9 推导式与函数"""======================= 推导式:推导式式用来快速方便的产生列表或者字典的表达式 ============================="""'''列表推导式:列表 = [表达式 for 变量 in 序列]产生一个新列表,列表中的元素的就是每次循环对应的表达式结果。相当于:列表 = []for 变量 in 序列: 列表.append(表达式)'''list1 = [10 for x in range(3)]print(li