Python 比较两个列表的元素并为第二个列表添加异常?
我需要比较两个列表的元素,而不考虑顺序或位置。我知道人们问了很多这个问题。但是我有一个例外,第二个列表排除for循环中的元素。下面显示一段代码:Python 比较两个列表的元素并为第二个列表添加异常?,python,Python,我需要比较两个列表的元素,而不考虑顺序或位置。我知道人们问了很多这个问题。但是我有一个例外,第二个列表排除for循环中的元素。下面显示一段代码: s = [0, 2, 5, 6, 8, 9] c= [2,6,7,8,9] if s in (c - v): print ("%s is a root "%v) # I'm expecting here when 7 is excluded from c all the elements
s = [0, 2, 5, 6, 8, 9]
c= [2,6,7,8,9]
if s in (c - v):
print ("%s is a root "%v)
# I'm expecting here when 7 is excluded from c all the elements of c are there in S and the condition is true
此代码引发一个错误:
unsupported operand type(s) for -: 'list' and 'int'
在这段代码中,c,s是两个列表,v是int
因此,我的问题是如何从列表中排除此元素。我知道c的大小小于s的大小,但实际上,c是我的参考,而s的大小是可变的,它可能或多或少,换句话说,我在c中搜索s的元素,而不管大小如何
非常感谢您的帮助
import networkx as nx
edges = [(1, 0),(1, 4),(1, 6),(1, 8),(0, 3),(0, 4),(0, 5),(0, 7),
(0, 9),(2, 5),(2, 7),(3, 4),(3, 8),(3, 9),(4, 6),
(4, 8),(4, 9),(5, 6),(5, 7),(5, 8),(6, 7),(6, 8),(6, 9),(7, 8),(7,9)]
k= nx.Graph()
k.add_edges_from(edges)
c= [2,6,7,8,9]
for v in c:
s = list(k.neighbors(v))
if s != v and s in c:
print ("%s is a root "%v)
结果什么都没有。
这就是你想要的吗?多亏了@adamkwm,他引导我完成了答案和澄清。 这正是我想要的:
s = [0, 2, 5, 6, 8, 9]
c = [2, 6, 7, 8, 9]
x = set(c) - (set(s) & set(c))
for v in x:
print(v)
请提供一份报告。我想知道的主要问题是,
c
的所有元素都是可哈希的吗?如果是这样,可能最好使用集合
。但是输入和预期输出也很重要。if s!=c中的v和s
动态创建一个新的列表理解:如果s在[x代表x代表x如果x!=c]
c中s的元素意味着[2,6,8,9]?让我们来看看。实际上,我希望元素7是一个答案,但我现在发现在这种情况下s的元素比c多,因此条件也是假的。我想解释这两种情况,如果S在C或C在扫描我写:如果S!=c中的v和s或如果c!=s中的v和c:我再次尝试了,x=set(c)-set(s)
已经可以了,不需要&part。