python - 过滤掉较短的子列表

标签 python python-3.x algorithm list

我有一个嵌套列表:

[['spam', 'eggs'],
['spam', 'eggs', '111'],
['spam', 'eggs', 'foo'],
['spam', 'eggs', '111', 'bar'],
['spam', 'eggs', 'foo', 'bar']]

我需要一种算法来获取较短子列表的索引,其中所有元素都包含在较长的子列表中。在此示例中,算法应返回:

[0, 1, 2]

如有任何帮助,我们将不胜感激!

最佳答案

一种方法可能是在同一列表中使用双 for 循环,并使用 .issubset 检查那些不等于 index 的情况:

my_list = [['spam', 'eggs'],
            ['spam', 'eggs', '111'],
            ['spam', 'eggs', 'foo'],
            ['spam', 'eggs', '111', 'bar'],
            ['spam', 'eggs', 'foo', 'bar']]

indexes = []
for index1, item1 in enumerate(my_list):
    for index2, item2 in enumerate(my_list):
        if index1 != index2:
            if set(item1).issubset(item2):
                indexes.append(index1)
                break

print(indexes)

结果:

[0, 1, 2]

关于python - 过滤掉较短的子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50382729/

相关文章:

python - 如何将 UDP 与 Asyncio 一起用于从服务器到客户端的多个文件传输 - python

Python字典匹配key的任意元素

algorithm - 编辑我的 Easy68k(汇编)程序以减去而不是添加

python - 如何获取Python/Pip包的PyPi链接、许可证、代码和主页?

c# - 随机化列表,同时确保重复项不连续

algorithm - 给定节点关系数据结构,如何对父子列表进行排序?

python - 从 numpy 数组在 paraview 中创建等高线图

python - xlrd.biffh.XLRDError : Excel xlsx file; not supported

python - 使用 boost.python 公开 std::vector<struct>

Python nosetest 不起作用,但直接运行它可以使用 matplotlib 的 @image_comparison