当前位置: 首页 > 面试题库 >

Python:在另一个列表的成员中查找列表(顺序)

濮翰学
2023-03-14
问题内容

如果我有这个:

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)。

如果有帮助,我可以得到一个列表列表:这些列表代表有向图中从节点1到节点x的所有可能路径(已访问节点的列表):我想“分解”出公共路径任何更长的路径。(因此,寻找构成所有较长路径的所有不可约的“原子”路径)。


问题答案:

不知道这是否是pythonic,但是我可以这样进行:

def is_sublist(a, b):
    if not a: return True
    if not b: return False
    return b[:len(a)] == a or is_sublist(a, b[1:])

在本次讨论中提供了较短的解决方案,但与解决方案存在相同的问题set-它不考虑元素的顺序。

更新:
受MAK的启发,我介绍了更简洁明了的代码版本。

更新:由于切片中的列表复制,因此此方法存在性能问题。另外,由于它是递归的,因此您可能会遇到长列表的递归限制。要消除复制,可以使用Numpy
slices创建视图,而不是copys。如果遇到性能或递归限制问题,则应使用不递归的解决方案。



 类似资料:
  • 我需要比较两个列表,以便创建在一个列表中找到的特定元素的新列表,而不是在另一个列表中。例如: 我想在列表_1中循环,并将列表_2中未在列表_1中找到的所有元素附加到主列表。 结果应该是: 用python怎么做?

  • 问题内容: 我有两个列表,一个包含 相册,文件对的 列表,另一个仅包含有关一张照片的信息- 相册 (位置0)和 文件 (位置1) 如何查看 照片 列表是否在 照片 列表中?就像字符串一样。 相册 , 文件的 位置无关紧要,因为不会有任何 文件 等于 相册 。 问题答案: 同样喜欢字符串。不仅如此,也是 如此 。也适用于列表中的列表: 对列表的成员资格测试仅迭代列表,并对每个元素使用相等性测试以查看

  • 问题内容: 我确信这个问题以前可能已经被问过,但我似乎找不到正确的答案。如果我有两个清单 我正在尝试使用_list1重新排列_list2中的元素,以便它们完全匹配顺序。什么是最干净的方法?所需的输出: 很抱歉,如果这是重复的,但到目前为止,我只能使用压缩的sorted()方法找到数字列表的答案。 如果_list2是列表列表怎么办? 所需输出: 还有一个假设:如果我想使用_list1作为键对其他任何

  • 问题内容: 关于你的第一个问题:该代码非常好,并且如果与其中的一个元素相等就可以正常工作。也许你尝试查找与其中一项不完全匹配的字符串,或者你使用的浮点值会导致不准确。 关于第二个问题:如果“查找”列表中的内容,实际上有几种可能的方法。 检查里面是否有东西 这是你描述的用例:检查列表中是否包含某些内容。如你所知,你可以使用in运算符: 过滤集合 即,找到满足特定条件的序列中的所有元素。你可以为此使用

  • 问题内容: 我有一个产品ID列表,我想找出哪些订单包含所有这些产品。订单表的结构如下: 显然,我可以使用PHP中的一些循环来做到这一点,但是我想知道是否有一种优雅的方法可以完全在mysql中完成。我理想的幻想查询将是这样的: 有希望还是我应该去阅读托尔金?:)另外,出于好奇,如果不能在mysql中使用,是否还有其他具有此功能的数据库? 问题答案: 你很亲密 关于关系代数中的“出于好奇”问题,这可以

  • 本文向大家介绍在Python中查找列表中元素的相对顺序,包括了在Python中查找列表中元素的相对顺序的使用技巧和注意事项,需要的朋友参考一下 我们给了一个列表,其元素是整数。我们需要找到相对顺序,这意味着如果它们以升序排序,那么我们需要找到它们位置的索引。 带排序和索引 我们首先对整个列表进行排序,然后在排序之后找出每个列表的索引。 示例 输出结果 运行上面的代码给我们以下结果- 用枚举和排序