我正在阅读学习Python ,刚刚完成了关于列表的部分。当我在玩耍时,看看我能用它做什么,我遇到了一些奇怪的事情:
[2, 3] in [1, 2, 3, 4] == False
您无法使用in
关键字测试列表子集。为什么会这样?
答案 0 :(得分:8)
[2,3] `is not in` [1,2,3,4]
[2,3] `is in` [1, [2,3] ,4]
2和3是列表中的元素,但列表[2,3]不是列表中的元素。
答案 1 :(得分:6)
这是因为public void Main()
{
...
try
{
...
Dts.TaskResult = (int)ScriptResults.Success;
}
catch (Exception ex)
{
Dts.Events.FireError(0, "ERROR", ex.Message, null, 0);
Dts.TaskResult = (int)ScriptResults.Failure;
}
}
实际上<{1}}实际上不是。
要测试子集,请使用[2, 3]
模块中的[1, 2, 3, 4]
函数。
issubset
答案 2 :(得分:3)
这是对set
对象的完美使用,其中包含issubset
方法,用于此目的:
set([2, 3]).issubset([1, 2, 3, 4]) # test if 2 and 3 are located in another iterable
答案 3 :(得分:3)
因为in
检查元素是否相等。如果你有像
[2, 3] in [[1,2], [2, 3], [3, 4]]
它会起作用。这可行,因为in
查看列表,将您的元素与其查看的列表中的每个元素进行比较,如果任何比较为True
,则{{1} } statement是in
您基本上都在问为什么这不会返回true:
True.
答案 4 :(得分:2)
用于测试列表成员资格,例如,1 in [1,2,3]
为True
。
如果您打算检查子集(顺序和重复无关紧要),您可以使用子集运算符(看起来像小于或等于):{1,2} <= {1,2,3,4,5}
答案 5 :(得分:1)
这是因为&#39; in&#39;检查列表中的任何项目是否与您给定的项目匹配。
列表中的项目分别为1,2,3和4.
您的项目是列表[2,3],它不等于上述任何一项。
答案 6 :(得分:1)
这是因为在两个列表中,项目的类型为 int 而非列表。
[1,2,3,4,5] does not include an item of type list i.e [2,3]. Although 2 and 3
are items in [1,2,3,4,5]
[2,3] in [1, [2,3] ,4] returns true because [2,3] is in [1,[2,3],4,5]
您必须分别在[1,2,3,4,5]中测试2或3的成员身份才能返回 True
i.e: 2 in [1,2,3,4,5] or 3 in [1,2,3,4,5]