如果我有这个:
a='abcdefghij'
b='de'
然后在 a 中找到 b:
b in a => True
有没有办法用列表做类似的事情?像这样:
a=list('abcdefghij')
b=list('de')
b in a => False
‘False’ 结果是可以理解的 - 因为它正确地寻找元素 ‘de’,而不是(我碰巧希望它做的)’d’ 后跟 ‘e’
这是有效的,我知道:
a=['a', 'b', 'c', ['d', 'e'], 'f', 'g', 'h']
b=list('de')
b in a => True
我可以处理数据以获得我想要的东西——但是有没有一种简短的 Pythonic 方法可以做到这一点?
澄清一下:我需要保留此处的顺序(b=[‘e’,’d’],应返回 False)。
如果有帮助,我有一个列表列表:这些列表代表有向图中从 node-1 到 node-x 的所有可能路径(访问节点列表):我想“分解”出常见路径任何更长的路径。 (因此寻找构成所有较长路径的所有不可简化的“原子”路径)。
有关的
原文由 monojohnny 发布,翻译遵循 CC BY-SA 4.0 许可协议
不知道这是否非常 pythonic,但我会这样做:
本次 讨论 中提供了较短的解决方案,但它与
set
的解决方案存在相同的问题 - 它不考虑元素的顺序。更新:
受 MAK 的启发,我引入了更简洁明了的代码版本。
更新:由于切片中的列表复制,此方法存在性能问题。此外,由于它是递归的,您可能会遇到长列表的递归限制。要消除复制,您可以使用创建视图的 Numpy 切片 ,而不是副本。如果您遇到性能或递归限制问题,您应该使用没有递归的解决方案。