我有两个
非常大
列表
和
..。我想生成一个新的列表
长度的
它的所有位置都有1
在哪里
是在
,否则为0。在Python中执行此操作的计算效率最高的方法是什么?换句话说,有没有比下面更有效的方法?
C = []
for x in A:
if x in B:
C.append(1)
else:
C.append(0)
发布于 2021-03-02 15:15:34
为了提高性能,您应该使
A
对象。
进行恒定时间的成员资格测试。这将从多项式时间O提高整个算法的效率
*
M)到线性时间,O(N):
c = []
B = set(B)
for x in A:
if x in B:
C.append(1)
else:
C.append(0)
发布于 2021-03-02 14:58:52
您可以使用列表理解,但请记住,与循环方法相比,它在效率方面并没有提供很大的改进:
[1 if x in B else 0 for x in A]
更新:最快的方法是从B准备一个地图并使用它进行搜索。
B_map = {elt: True for elt in B}
C = [1 if B_map.get(x, False) else 0 for x in A]
https://stackoverflow.com/questions/66434635
复制相似问题