如果其中一个是真的,我如何停止for语句?python
我想看看这个名单是否有共同之处。如果他们有一个打印“x”,但如果他们没有打印“y”。但只有一个,不是两个。代码:如果其中一个是真的,我如何停止for语句?python,python,Python,我想看看这个名单是否有共同之处。如果他们有一个打印“x”,但如果他们没有打印“y”。但只有一个,不是两个。代码: lista_1 = [1, 2, 4, 5, 6, 7, 8] lista_2 = [10, 12, 16, 5, 3, 2] for i in lista_1: if i in lista_2: print ('Tienen un elemento en común') break exit() if i not in
lista_1 = [1, 2, 4, 5, 6, 7, 8]
lista_2 = [10, 12, 16, 5, 3, 2]
for i in lista_1:
if i in lista_2:
print ('Tienen un elemento en común')
break
exit()
if i not in lista_2:
print ('No tienen ningún elemento en común')
用这种方法,它只打印一次x和y,但我只想打印其中一个,你需要遍历整个列表,然后才能说它们没有共同的元素,所以我为else添加了一个
语句。此外,我还将lista_2作为一个集合来提高效率
lista_1 = [1, 2, 4, 5, 6, 7, 8]
set_2 = {10, 12, 16, 5, 3, 2}
for i in lista_1:
if i in set_2:
print('Tienen un elemento en común')
break
else:
print('No tienen ningún elemento en común')
检查两个列表是否具有公共元素的最简单方法是检查两个列表之间的交点:
common = list(set(lista_1).intersection(lista_2))
if(now common):
print("no common elements")
更简单的方法是使用:
(列表(集合(列表1)和集合(列表2)))
这将获取两个列表,将它们转换为无序集,然后使用&
(and)运算符将它们彼此进行比较。这样做的结果将是一个集合,其中包含两个集合中匹配的项,最外层的list()
方法将其转换回一个列表
如果不是空的,你就有火柴了 您可以通过查看两个对应集合的交点来完成:
if set(lista_1) & set(lista_2):
print('common elemens')
else:
print("no common elements")
为了使过程更快、更简洁,您可以使用(我相信是西班牙语中的concento)进行快速查找,并使用在第一个找到的公共元素处停止:
#encoding: utf-8
lista_1 = [1, 2, 4, 5, 6, 7, 8]
lista_2 = [10, 12, 16, 5, 3, 2]
conjunto_2 = set(lista_2)
comun = any(elemento_1 in conjunto_2 for elemento_1 in lista_1)
if comun:
print('Tienen un elemento en común')
else:
print ('No tienen ningún elemento en común')
如果您编码2
If
s,它将同时显示这两个选项。必须使用1if
和1elif
。
将第二个
if
更改为elif
或else
您能显示您期望的输出吗?我认为这是错误的方法,使用设置
操作或任何()
/所有()
您可以更有效地执行我已经读过的问题的可能的副本,但我不想得到和他一样的结果does@almartinez那么你想要什么样的结果呢?如果你想要这种方法,那么只需为else构造一个,不需要标志,然而,其他方法更好(参见我对问题的评论),但即使它们有共同点或没有共同点,它也不会打印,为什么?@almartinez我只是测试了一下,事实并非如此。你在使用什么输入?@nfn neil我没有使用任何输入,列表已经有了defined@Chris_Rands:我不认为每一个西班牙语单词都是一个英语单词,后面都有一个a
:)@almartinez:是的,这个问题已经解决了。不过,我的回答更简洁,可能更快。