python - 使用更大运算符在两个列表之间进行 Python 比较
问题描述
谁能帮我解释为什么第一个和第二个返回不同的结果?我认为第二个也应该返回 2。
In [15]: bisect.bisect([0,3], 3)
Out[15]: 2
In [16]: bisect.bisect([[0, 0], [3, 50]], [3])
Out[16]: 1
参考:https ://docs.python.org/3/tutorial/datastructures.html#comparing-sequences-and-other-types
解决方案
详细答案:
指示的命令返回在列表 a 中插入项目 x 的索引,保留顺序,假设 a 已排序。
为了计算这个位置,执行二进制搜索,并且在每次迭代中,在列表中的值和要插入的值之间进行比较。
我注意到的第一个区别是,在第一个示例中,您提供了一个数字列表和一个要输入的数值。在第二种情况下,它是一个列表列表,以及一个要插入的列表。
这会影响比较结果,尤其是在将给定值与列表的索引 1 进行比较时。
在数字列表的情况下,我们有 [0, 3] 和 3,因此对索引 1 的比较是:3 < 3,它返回 False。
在列表列表的情况下,我们有 [[0, 0], [3, 50]] 和 [3],索引 1 中的比较是 [3] < [3, 50]。
比较列表遵循稍微不同的方法,按照字典顺序,如https://docs.python.org/3/tutorial/datastructures.html#comparing-sequences-and-other-types所示。
在 [3] 的情况下,它是 [3, 50] 的子序列,因此比较结果 [3] < [3, 50] 返回 True。
推荐阅读
- java - 如何按两个字段对数组列表进行排序
- css - 如何根据背景反转笔触文本颜色
- cryptography - 已知 N(私钥)时如何在 ECC 中执行快捷方式功能
- c# - 如何修复此代码中的“要解密的数据长度无效”
- javascript - 'empty x 2' 数组和 [undefined, undefined] 有什么区别?
- java - 在 Apache Spark 中解析 JSON 时出现奇怪的错误
- protocol-buffers - protobuf 中的随机字段编号
- python - 如何将列表函数应用于pandas df中的文本生成器obj
- c - 如何修复 ld:警告:忽略文件 Atome 错误?
- java - 不同情况下单相等