python - python 中 <= 的输出很奇怪

标签 python list set

>>> [6,7,8,16,18] <= [6,8,11,13,17]
True

<=应该返回 True如果左集中的每个元素都在右集中。但是7,16,18不在正确的列表中。即使我像这样把数字放在集合中

>>> (6,7,8,16,18) <= (6,8,11,13,17)
True

https://docs.python.org/2/library/sets.html

最佳答案

您使用的是列表和元组,而不是集合。使用 {...} for set literals :

>>> {6, 7, 8, 16, 18} <= {6, 8, 11, 13, 17}
False

或使用 set([...]) frozenset([...]) .设置文字语法仅在 Python 2.7 和 3.x 中可用。

列表和元组不支持集合操作。相反,< , <= , >>=比较遵循字典顺序约定;内容成对比较,结果基于两个序列之间第一个不同的值。

按字典顺序排序,您的左侧列表先于右侧列表排序(6 == 6,然后是 7 < 8),因此序列的结果是完全正确的。

关于python - python 中 <= 的输出很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22966317/

相关文章:

python - 追加到固定大小的列表

Pythonic 打印列表项的方法

Python:创建列表列表作为字典值

c# - 使用 linq 在数组列表中找到最接近的值?

c++ - 基于std::set的无序选择实现最终会重复

algorithm - 集合算法的 Ocaml 实现建议

python - Pandas 变化指数的优点和缺点

python - 将 abc.abstractmethod 与其他装饰器相结合

python - numpy:将每个一维数组元素复制 n 次

ios - 如何在 Swift 中创建核心数据关系