微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python 3,比较两个列表列表的元素

如何解决python 3,比较两个列表列表的元素

我正在尝试在 python 中比较 2 个列表列表的元素。我想创建一个新列表 (ph),如果第一个列表列表中的列表元素在第二个列表列表的元素中,则该列表为 1。 但是,这似乎比较了整个列表而不是单个元素。代码如下。非常感谢您的帮助! :)

import numpy as np
import pandas as pd

abc = [[1,800000,3],[4,5,6],[100000,7,8]]
l = [[
   [i for i in range(0,100000)],[i for i in range(200000,300000)],[i for i in range(400000,500000)],[i for i in range(600000,700000)],[i for i in range(800000,900000)],[i for i in range(1000000,1100000)]
]]
ph = []
for i in abc:
    for j in l:
        if l[0] == abc[0]:
           ph.append(1)
        else:
           ph.append(0)
print(ph)

解决方法

你的问题的目标对我来说有点不清楚。如果我错了,请纠正我,但您想要的是:对于 abc 的每个子列表,获取一个布尔值,描述其所有元素是否在 l 中的任何位置。是吗?
如果确实如此,这就是我的答案。
首先,您的第二个列表不是列表列表,而是列表列表。因此,我删除了代码中的嵌套列表。

abc = [[1,800000,3],[4,5,6],[100000,7,8]]
L = [
   [i for i in range(0,100000)],[i for i in range(200000,300000)],[i for i in range(400000,500000)],[i for i in range(600000,700000)],[i for i in range(800000,900000)],[i for i in range(1000000,1100000)]
]
flattened_L = sum(L,[])
print(
    list(map(lambda sublist: all(x in flattened_L for x in sublist),abc))
)
# returns [True,True,False]

我的代码首先展平 L 以便检查其中是否有任何元素变得容易。然后,对于 abc 中的每个子列表,它检查是否所有元素都在这个扁平列表中。
注意:我的代码返回一个布尔值列表。如果您绝对需要整数值(0 和 1),而您不应该这样做,则可以将 int 包裹在 all 周围。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。