如果其中一个是真的,我怎么能停止for语句呢?蟒蛇

时间:2017-04-12 08:04:04

标签: 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_2:
        print ('No tienen ningún elemento en común')

用这种方式打印x一次,然后打印一次,但我想只打印其中一个

6 个答案:

答案 0 :(得分:6)

你需要遍历整个列表才能说它们没有共同的元素,所以我添加了for-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')

答案 1 :(得分:0)

检查2个列表是否具有共同元素的最简单方法是检查两者之间的交集:

common = list(set(lista_1).intersection(lista_2))
if(now common):
    print("no common elements")

答案 2 :(得分:0)

更简单的方法是使用:

(list(set(lista_1) & set(lista_2)))

这将采用两个列表,将它们转换为无序集合,然后可以使用&(和)运算符将它们相互比较。结果将是一个包含两个集合中匹配的项目的集合,最外面的list()方法将转换回列表。

如果它不是空的,你就有了比赛。 ;)

答案 3 :(得分:0)

您可以通过查看两个相应集合的交集来完成:

 if set(lista_1) & set(lista_2):
    print('common elemens')
 else:
    print("no common elements")

答案 4 :(得分:0)

为了使流程更快更简洁,您可以使用set(西班牙语中的 conjunto ,我相信)进行快速查找,并使用any()来停止第一个找到的共同元素:

#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')

答案 5 :(得分:-1)

如果您编码2 if,则会显示两者。您必须使用1 if和1 elif。 将第二个if更改为elifelse