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

总结

比较两个列表: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)

https://stackoverflow.com/questions/69572444/

相关文章:

r - 提取特定格式的部分字符串

python - Julia 代码没有完成而 Python 代码完成了

ruby - Rails 将数组合并为数组的数组

haskell - 我可以说 Monad 使将某些类型视为同构成为可能吗?

python - 从键列表创建嵌套字典

r - 如何提取R中的第一个字符串

android - 我正在尝试使用安全参数,但是当我将依赖项添加到项目级别 build.gradle

ios - 通过 FaSTLane "the server responded with statu

python - 对具有更高优先级正数的绝对值的整数列表进行排序

node.js - 超时错误 - MongoServerSelectionError:连接 ECON