一种简洁的列表创建的方法,首先介绍下它的语法规则,exp 或者 condition 都是根据参数名来传递元素的:
[exp for x in iterable] # 每个 iterable 中的数据都做 exp 处理,处理结果生成列表 [exp for x in iterable_A for y in iterable_B] # 每迭代 iterable_A 中的一个元素,就把 ierable_B 中的所有元素都迭代一遍 [exp for x in iterable if condition] # 当 iterable 中的数据满足 if 条件时,做 exp 处理,处理结果生成列表 [exp1 if condition else exp2 for x in iterable] # 当 iterable 中的数据满足 if 条件时,做 exp1 处理,否则做 exp2 处理,处理结果生成列表
接下来举几个例子:
a = [x * x for x in range(1, 11)] # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] b = [x * x for x in range(1, 11) if x % 2 == 0] # [4, 16, 36, 64, 100] c = [m + n for m in ‘ABC‘ for n in ‘XYZ‘] # [‘AX‘, ‘AY‘, ‘AZ‘, ‘BX‘, ‘BY‘, ‘BZ‘, ‘CX‘, ‘CY‘, ‘CZ‘] d = [x if x % 2 == 0 else -x for x in range(1, 11)] # [-1, 2, -3, 4, -5, 6, -7, 8, -9, 10] e = {‘x‘: ‘A‘, ‘y‘: ‘B‘, ‘z‘: ‘C‘ } f = [k + ‘=‘ + v for k, v in e.items()] # [‘y=B‘, ‘x=A‘, ‘z=C‘]
原文:https://www.cnblogs.com/yanghh/p/13192246.html