业务逻辑复杂不适合用推导式 用for循环可读性更高
最简单形式
list_val = [i**2 for i in range(1,6)]
print(list_val)
[1, 4, 9, 16, 25]
word_list = ['l1','l2','l3']
print([i.upper() for i in word_list])
['L1', 'L2', 'L3']
过滤条件形式
#打印20以内的偶数
list_val = []
for i in range (21):
if(i%2 == 0):
list_val.append(i)
print(list_val)
n_l = [i for i in range(21) if i%2 == 0]
print(n_l)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
#if else
names = ['John', 'Joe', 'Johnson', 'Johnson']
testl_v =[]
for name in names:
if len(name)>3:
testl_v.append(name.upper())
else:
testl_v.append(name.lower())
print(testl_v)
testl_v1 =[]
[testl_v1.append(name.upper()) if len(name) >3 else testl_v1.append(name.lower()) for name in names]
print(testl_v1)
['JOHN', 'joe', 'JOHNSON', 'JOHNSON']
['JOHN', 'joe', 'JOHNSON', 'JOHNSON']
循环嵌套
name_t = []
for i in '赵钱孙':
for j in '一二三':
name_t.append(i+j)
print(name_t)
['赵一', '赵二', '赵三', '钱一', '钱二', '钱三', '孙一', '孙二', '孙三']
n_t_1 = [i+j for i in '赵钱孙' for j in '一二三']
print(n_t_1)
['赵一', '赵二', '赵三', '钱一', '钱二', '钱三', '孙一', '孙二', '孙三']