gpt4 book ai didi

python - 在 for 循环中消除 "found"变量

转载 作者:太空宇宙 更新时间:2023-11-04 00:17:28 25 4
gpt4 key购买 nike

过去,我们在遍历列表时使用“found”变量来表示您找到了匹配项。现在有使用带有 for 循环的 'else' 的 pythonic 构造来消除使用 'found' 变量。例如,这很漂亮:

l = [1, 2, 3]
magic_number = 4

for n in l:
if n == magic_number:
print("Magic number found")
break
else:
print("Magic number not found")

但是,我有一个嵌套的 for 循环,我需要存储第二个数组(下面的 m)中不存在但存在第一个数组(下面的 l)中的所有项。我只是不确定如何着手实现这个结构。我不想(如果我不需要)使用“找到的”变量……有什么想法吗?

l = [1, 2, 3]
m = [4, 5, 6]

not_found = list()

for n in l:
for o in m:
if n == o:
print("Found a match")
break
else:
print("No match found")

not_found.append(o)

最佳答案

如果您想要 l 中不在 m 中的所有元素,您可以进行理解(如@PatrickHaugh 建议的那样)或集合操作。

理解:

>>> l = [1, 2, 3]
>>> m = [4, 5, 6]
>>> [o for o in l if o not in m]
[1, 2, 3]

如果您更喜欢使用集合操作:

>>> l = {1, 2, 3}
>>> m = {4, 5, 6}
>>> l - m
{1, 2, 3}
>>> l = {1, 2, 3, 4}
>>> l - m
{1, 2, 3}

注意这里的lmsets .

关于python - 在 for 循环中消除 "found"变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50401794/

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