我正在尝试比较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)
发布于 2021-02-19 17:16:24
你的问题的目的对我来说有点不清楚。如果我错了,请纠正我,但你想要的是:对于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),那么可以用all
包装int
。
https://stackoverflow.com/questions/66268321
复制相似问题