参考博客:python基础-列表推导式
笔记仅做总结复习使用~
python使用循环时(虽然还没使用过大的循环或嵌套循环),利用for循环写,逻辑更清晰些,但有时候循环后得到的结果要拼接到列表中,使用for循环会涉及到缩进,如果嵌套循环,缩进会更复杂些,对于循环在哪里结束就会比较迷(对我来说…),突然就体会到一句话循环(列表式推导)的便利了,总结一下下。
比如:
‘Can you speak English?’
要将这句话中每个单词中的大写转换为小写,使用for循环时:
test=['Can','you','speak','English']
for i in test:
print(i.lower())
can
you
speak
english
但使用列表式推导时:
test=['Can','you','speak','English']
[i.lower() for i in test]
[‘can’, ‘you’, ‘speak’, ‘english’](输出仍为列表形式)
同样是使用了 “for i in test” 语句, 列表式循环便捷得直接对 i 进行操作,省地方省格式!
中括号内的语句是嵌套关系,最前面的是最后执行的语句,最后面的最内层做循环的语句。
[x+3 for x in range(0,5)]
# [3, 4, 5, 6, 7]
[a+b for a in range(0,5) for b in range(1,3)]
# [1, 2, 2, 3, 3, 4, 4, 5, 5, 6]
'''使用for循环对比'''
for x in range(0,5):
print(x+3)
for a in range(0,5):
for b in range(1,3):
print(a+b)
[x for x in range(0,11) if x%2==0]
#[0, 2, 4, 6, 8, 10]
'''使用for循环对比'''
for x in range(0,11):
if x%2==0:
print(x)
[a+b for a in range(2,6) if a%2==0 for b in [1,3,4] if b%2==0]
#[6, 8]
'''使用for循环对比'''
for a in range(2,6):
if a%2==0:
for b in [1,3,4]:
if b%2==0:
print(a+b)
#或者
for a in range(2,6):
for b in [1,3,4]:
if b%2==0 and a%2==0: #if b%2==0 | a%2==0
print(a+b)
就很长,很占地方…
这里引用一个例子仅供学习(参考文章),从大列表中取小列表中的每个元素。
nums = [[1, 3, 5, 7], [2, 4, 6, 8]]
# 使上述nums中的每个数字都取出来,放到一个新列表中,用到2个for循环
new_nums = []
for nums_a in nums:
# print(nums_a)
for i in nums_a:
new_nums.append(i)
但使用列表推导式:
new_num = [i for nums_a in nums for i in nums_a]
从 i 后面断开,i 即为最后要取的对象,for nums_a in num for i in nums_a为外层循环到内层循环!
还需要多练习多在实际场景中利用,才能灵活使用…