首页 > 解决方案 > 使用 zip() 函数的 Python 列表理解的 O(n) 复杂度

问题描述

我目前正在使用以下代码完成教程:

# numpy where
A = np.array([1,2,3,4])
B = np.array([100, 200, 300, 400])
condition = np.array([True, True, False, False])

answer = [(A_val if cond else B_val) for A_val, B_val, cond in zip(A, B, condition)]

answer
# Out: [1, 2, 300, 400]

问题:这个python this 结构的复杂性是什么,列表理解和 zip() 函数的混合?

传递给 zip() 的每个变量是否都像另一个 for 循环一样?那么列表理解本身呢?

谢谢你的帮助!

标签: pythonpython-3.xnumpytime-complexitycomplexity-theory

解决方案


您正在迭代 list A,一旦每一步都添加一个元素B,所以复杂性是最短列表的大小 在哪里conditionanswerO(n)n

传递给 zip() 的每个变量是否都像另一个 for 循环一样?

将其视为一个循环,在每次迭代或所有迭代中zip再添加1 个参数。(假设最小的参数是 size ) 例如,对于你正在做的工作,但它是恒定的,所以它是. (再次假设参数的最小尺寸是)O(1)O(n)nn
zip(X1,X2,...,Xm)O(mn)mO(n)n


推荐阅读