我想知道list1
中list2
是否有相同的对象,如果list1
在list2
中没有相同的对象,我会在那里做一些事情然后我会做其他事情。
我在这里尝试做的是使用if语句如下但是失败,无论list1在list2中是否有相同的对象,编码仍在运行
c = "abc"
a={"abc","dsw","ccc","ddd"}
b={"abc","123"}
if b.issubset(a):
do something
else:
do something
我想比较内部变量中的任何一个是相同的,还是重复的。
或者无论如何要比较c with set like b or a
子集或超集将仅输出为True,我想检查集合中的一个或多个变量是相同还是重复,而不是必须全部相同。
答案 0 :(得分:3)
主要原因是因为您已导入from numpy import *
。因此,当您调用该方法时,您实际上正在调用numpy's all method
从它的官方文件:
返回:
all : ndarray, bool
除非指定out,否则返回一个新的布尔值或数组,在这种情况下返回对out的引用。
numpy's all
的返回类型是一个boollen数组。
<强>代码:强>
from numpy import *
list1={"abc","dsw","ccc","ddd"}
list2={"abc"}
print [a for a in all(x i list2 for x in list1)]
<强>输出:强>
[False, True, False, False]
因此,当您检查if all(x in list2 for x in list1):
它被简化为if [False, True, False, False]
时,您的程序始终为true
,因为数组不为空。
更清楚if all(x in list2 for x in list1) >> if [False, True, False, False] >> true
答案 1 :(得分:2)
由于list1和list 2是集合,你可以这样做:
print('Yes' if list2.issubset(list1) else 'No')
答案 2 :(得分:2)
你使用套装;甚至不需要使用all
:
>>> a = {"abc","dsw","ccc","ddd"}
>>> b = {"abc"}
您想知道a
中的所有元素是否也在b
中。这意味着:a
是b
的一部分:
>>> a.issubset(b)
False
>>> b.issubset(a)
True
>>> a.issubset(a) # is a subset of itself as well = have same elements
True
请注意issubset
已经过优化,如果b
为set
且 元素少于a
,那么它可以直接使用返回False
;你的方法不能。
答案 3 :(得分:1)
如果list1和list2是set,你将这样做(python 2.7):
print True if list1 & list2 else False