gpt4 book ai didi

python - 如何比较列表与列表的不均匀列表

转载 作者:行者123 更新时间:2023-12-05 08:16:47 25 4
gpt4 key购买 nike

总结

比较两个列表:A = [2,3]B = [[2],[1,2]],目标是找到元素A 不存在于 B 中:此处:[3]

问题

我正在尝试比较两个列表并输出 A 中的唯一编号。

A = [2,3]
B = [[2],[1,2]]
for x in range(len(A)):
for y in range(len(B)):
for z in range(len(B)):
if A[x] not in B[y][z]:
return x

预期的答案是 3,但是我在运行这段代码时遇到错误。任何帮助表示赞赏:)

最佳答案

除了@RocketHazmat 很好地修复的循环问题之外,多循环方法效率非常低,因为您需要将 B 的所有元素与 A 的所有元素进行比较。

而是使用set 区别:

from itertools import chain
set(A).difference(chain.from_iterable(B))

输出:{3}

更短更快的变体:

来自@DaniMasejo 的更短变体:set(A).difference(*B)

此变体在大型数据集(此处为 1000 项的随机数据集)上快约 2 倍:

import random
A = np.random.randint(0,1000, size=1000).tolist()
B = [np.random.randint(1,1000, size=random.randint(1,100)).tolist() for i in range(1000)]

输出:

# set(A).difference(*B)
638 µs ± 1.05 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

# set(A).difference(chain.from_iterable(B))
1.16 ms ± 2.72 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

关于python - 如何比较列表与列表的不均匀列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69572444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com