gpt4 book ai didi

python 列表理解(如果,继续,中断)

转载 作者:太空狗 更新时间:2023-10-30 01:44:37 25 4
gpt4 key购买 nike

我正在努力养成创建列表推导式的习惯,并从根本上优化我编写的任何代码。我做了这个小练习来确定给定数字中的所有数字是否都是偶数,当我尝试使用 for 循环创建列表时,如果语句我遇到了“继续”和“中断”的问题。我什至可以将这些流程控制插入列表中吗?

我很想知道我可以将任何一段代码缩短多少。这是我写的,我很乐意得到你们的反馈。

numbers = [str(x) for x in range(0, 10000)]

def is_all_even(nums):
temp_lst = []
evens_lst = []
for x in nums:
for y in x:
if int(y) % 2 == 0:
temp_lst.append(str(y))
continue
else:
break
if len(''.join(temp_lst[:])) == len(x):
evens_lst.append(''.join(temp_lst[:]))
del temp_lst[:]
print(evens_lst)

最佳答案

您可以使用列表组件,使用 all查找包含所有偶数位的数字:

print([s for s in numbers if all(not int(ch) % 2 for ch in s)])

all 将在找到任何奇数时短路。

如果您不想一次将所有数字存储在内存中,您可以使用 generator expression :

evens = (s for s in numbers if all(not int(ch) % 2 for ch in s))

要访问您只需要遍历偶数的数字:

for n in evens:
print(n)

您还可以将过滤器用于函数式方法,它在 python 3 中返回一个迭代器:

In [5]: evens = filter(lambda x: all(not int(ch) % 2 for ch in x), numbers)

In [6]: next(evens)
Out[6]: '0'

In [7]: next(evens)
Out[7]: '2'

In [8]: next(evens)
Out[8]: '4'

In [9]: next(evens)
Out[9]: '6'

关于python 列表理解(如果,继续,中断),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29756603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com