发布
社区首页 >问答首页 >python 3,比较两个列表列表的元素

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

Stack Overflow用户
提问于 2021-02-19 05:20:39
回答 1查看 36关注 0票数 0

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

代码语言:javascript
代码运行次数:0
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2021-02-19 17:16:24

你的问题的目的对我来说有点不清楚。如果我错了,请纠正我,但你想要的是:对于abc的每个子列表,获取一个布尔值,描述它的所有元素是否都在l中的任何地方。

如果真是这样,这是我的答案。

首先,您的第二个列表不是列表列表,而是列表。因此,我在代码中删除了一个嵌套列表。

代码语言:javascript
代码运行次数:0
复制
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),那么可以用all包装int

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66268321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档