列表、字典的推导式

列表、字典的推导式

列表推导式

什么是列表推导式

方法一:

列表 = [表达式 for 变量 in 序列] – 产生一个新的列表,变量在列表中每取一个元素九江表达式的值添加到新的列表中

方法二:

列表 = [表达式 for 变量 in 序列 if 条件语句] – 和方法一差不多只是多了个判断语句

方法三
列表 = [表达式 for 变量1 in 序列1 for 变量2 in 序列2 ]
列表 = [表达式 for 变量1 in 序列1 for 变量2 in 序列2 if 条件语句]

示例

list1 = [10 for x in range(5)]
print(list1)  # [10, 10, 10, 10, 10]

list2 = [x*2 for x in range(1, 5)]
print(list2)   # [2, 4, 6, 8]

list3 = [f'{x:0>3}' for x in range(10, 15)]
print(list3)   # ['010', '011', '012', '013', '014']


list4 = [x for x in range(10) if x % 2]
print(list4)   # [1, 3, 5, 7, 9]

list5 = ['str'+str(x) for x in [10, 34, 15, 11, 78, 90, 99] if x % 2]
print(list5)    # ['str15', 'str11', 'str99']

nums = [23, 89, 67, 56, 10, 33]
list6 = [x % 10 for x in nums]
print(list6)

list7 = [f'{x}:{y}' for x in range(1, 5) for y in range(10, 14)]
print(list7)  # ['1:10', '1:11', '1:12', '1:13', '2:10', '2:11', '2:12', '2:13', '3:10', '3:11', '3:12', '3:13', '4:10', '4:11', '4:12', '4:13']

list8 = [f'{x}:{y}' for x in range(1, 5) for y in range(10, 14) if x % 2 and y % 2 == 0]
print(list8)    # ['1:10', '1:12', '3:10', '3:12']

nums = [23, 89, 67, 10, 33]
new_nums = [x % 10 for x in nums] # 生成一个新的表元素是nums的个位数
print(new_nums)  # [3, 9, 7, 0, 3]

字典推导式

字典 = {key: value for 变量 in 序列}

字典 = {key: value for 变量 in 序列 if 条件语句}

示例

dict1 = {x: x*2 for x in range(5)}
print(dict1)   # {0: 0, 1: 2, 2: 4, 3: 6, 4: 8}

dict2 = {'a': 1, 'b': 2, 'c': 3, 'd': [1, 2]}
dict3 = {value: key for key, value in dict2.items() if type(value) not in (dict, list, set)}
print(dict3)

猜你喜欢

转载自blog.csdn.net/weixin_48491902/article/details/107769755