【问题标题】:find consecutive items in list [closed]在列表中查找连续项目[关闭]
【发布时间】:2020-05-09 11:48:51
【问题描述】:

这样的列表:

list = ["A","B","C","D","E","F","G","H","I"]

Python中如何获取子列表的第一个元素的index连续项目 ) 在此列表中。

子列表的大小可变。

子列表示例如下:

 ["C","D","E"],["B","C","D","E","F","G"],["G","H"], ...

【问题讨论】:

  • 到目前为止你尝试了什么?结果如何?另见:stackoverflow.com/help/how-to-ask
  • 计算复杂度有界限吗?您正在处理大量数据吗?你的数据有结构吗?如果以上都不是,我猜一些简单的 for 循环会解决你的问题......

标签: python list random indexing sublist


【解决方案1】:

您可以使用以下内容,假设listsub_lists 有效:

def isSublist(entire_list, sub_list):
    return sub_list in [entire_list[i:len(sub_list)+i] for i in range(len(entire_list) - len(sub_list))]


all_list = ["A","B","C","D","E","F","G","H","I"]
sub_lists = [["C","D","E"],["B","C","D","E","F","G"],["G","H"],["B", "D"], ["E"], ["E", "F", "H"]]

res = [all_list.index(l[0]) for l in sub_lists if isSublist(all_list, l)]
print(res)

它使用列表推导,您可以在以下链接中阅读更多内容:

https://realpython.com/list-comprehension-python/

【讨论】:

  • @David S:您的代码仅验证子列表中的第一个元素......而不是整个连续元素。
  • @moyoumos 这就是你问的“如何获取子列表第一个元素的索引”
  • @David S:子列表的所有元素都必须在大列表中按顺序排列...不仅仅是第一个元素。
  • @moyoumos 查看我的编辑
  • @David S:谢谢大卫……但我的问题对某些人来说不是很清楚……
猜你喜欢
  • 2014-11-07
  • 2020-07-20
  • 1970-01-01
  • 2016-07-17
  • 1970-01-01
  • 2016-08-24
  • 1970-01-01
  • 2014-07-08
  • 1970-01-01
相关资源
最近更新 更多