为什么你不能在'中使用'测试一个列表是否是另一个列表的子集?

时间:2015-07-15 18:05:54

标签: python python-3.x

我正在阅读学习Python ,刚刚完成了关于列表的部分。当我在玩耍时,看看我能用它做什么,我遇到了一些奇怪的事情:

[2, 3] in [1, 2, 3, 4] == False

您无法使用in关键字测试列表子集。为什么会这样?

7 个答案:

答案 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]