python - 比较嵌套列表中的前两个元素是否等于python中的比较列表
问题描述
在 python 2.7 中,我想在比较时验证元素的子集列表是否包含在更长的嵌套列表中,比如只说前两个元素。
假设我们有一个嵌套元素的大列表(这个 big_list 将有超过 10k 个元素,因此每次比较的循环非常低效,我想避免这种情况)。对于这个例子,假设我们在 big_list 中只有 4 个嵌套列表:
`
big_list = ((2,3,5,6,7), (4,5,6,7,8), (6,7,8,8), (8,4,2,7))
`
如果我有一个列表,比方说(4,5,11,11,11)
,我正在寻找一个与 big_list 相比将返回 True 的操作,因为 big_list 中的第二个列表以 (4,5,...) 开头并匹配我的 single_list 的前两个元素. 本质上,我想知道单个列表的前两个元素(例如(4,5,11,11,11))是否在我的大列表中重复,而不管其他后续数字(例如 11,11,...) .
如果另一个 single_list(例如(4,8,11,11,11)
)与 big_list 中的前两个元素不匹配,我的操作也应该返回 False。
我希望这更清楚。有什么帮助吗?
提前致谢,
解决方案
由于您有一个巨大的列表,为了避免每次都迭代整个事物 - 每次搜索的 O(n) 时间复杂度,您可以使用集合进行恒定时间查找。
tup_truth_set = set([tup[:2] for tup in big_list]) # set with first two letters of interest
那么你只需做这样的事情来检查恒定时间:
tuple_of_interest[:2] in tup_truth_set
推荐阅读
- django - Django - 在开发过程中共享媒体文件
- python - 使用 For 循环和列表的绑定数量不正确(Python 和 SQLite3)
- vb.net - 使用 alt + tab 时显示对话框消失
- azure - Azure 服务总线:使用 RootManageSharedAccessKey,仍然抱怨需要“侦听”声明?
- javascript - 如何将日期转换为列表中的随机索引?
- javascript - 简单的 JavaScript 回调混淆
- image - 我将什么传递给 Flutter Completer 对象?
- ruby-on-rails - 在 Ruby on Rails 中将函数参数转换为 Hash 对象
- amazon-cloudsearch - 无法将文档上传到 CloudSearch
- python - 如何在熊猫中选择每个唯一记录的第一行和最后一行