我试图检查列表是否有共同点。如果他们有一个印刷品" 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一次,然后打印一次,但我想只打印其中一个
答案 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
更改为elif
或else
。