列表推导式

[复制链接]
发表于 2025-9-22 18:08:39 | 显示全部楼层 |阅读模式

业务逻辑复杂不适合用推导式 用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)

['赵一', '赵二', '赵三', '钱一', '钱二', '钱三', '孙一', '孙二', '孙三']

GMT+8, 2025-10-28 06:06 , Processed in 0.134708 second(s), 35 queries Archiver|手机版|小黑屋|Attic ( 京ICP备2020048627号 )

快速回复 返回顶部 返回列表