gpt4 book ai didi

python - 使用 For-Else 会执行这两个条件。我该如何解决?

转载 作者:行者123 更新时间:2023-12-01 08:23:01 24 4
gpt4 key购买 nike

我需要编写一段代码,使用循环来找出两个列表中是否有公共(public)元素。所以,我写了以下内容:

l1 = eval(input("Enter a list: "))
l2 = eval(input("Enter another list: "))
for i in range (len(l1)):
for j in range (len(l2)):
if l1[i] == l2[j]:
print("Overlapped")
break
else:
print("Separated")

但是,我得到的输出是这样的:

Enter a list: [1,34,543,5,23,"apple"]
Enter another list: [54,23,6,213,"banana"]
Overlapped
Separated

由于列表确实有一个公共(public)成员,因此它应该只打印“Overlapped”,但最终也会打印“Separated”。

我该如何解决这个问题?我正在使用 python 3.7

非常感谢!!

最佳答案

创建元组列表(i, j)并使用单个for循环遍历元组列表。因此,要么输出为“Overlapped”,循环就会中断,要么执行 else 子句,输出为“Separated”:

for i, j in [(i, j) for i in range(len(l1)) for j in range(len(l2))]:
if l1[i] == l2[j]:
print("Overlapped")
break
else:
print("Separated")

输出:

Enter a list: [1,34,543,5,23,"apple"]
Enter another list: [54,23,6,213,"banana"]
Overlapped

Enter a list: [1,34,543,5,23,"apple"]
Enter another list: [54,234567,6,213,"banana"]
Separated
<小时/>

或者,您可以使用相等列表元素的索引创建元组列表。最后检查列表是否为空:

equal = [(i, j) for i in range (len(l1)) for j in range(len(l2)) if l1[i] == l2[j]]
if equal:
print("Overlapped")
else:
print("Separated")

关于python - 使用 For-Else 会执行这两个条件。我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54498338/

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