带有zip()函数的Python列表理解的O(n)复杂度

Luc*_*don 4 python complexity-theory numpy time-complexity python-3.x

我目前正在使用以下代码编写教程:

# 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]
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢你的帮助!

sam*_*m46 6

您要遍历list A,一旦执行了每个步骤Bcondition就向其中添加元素answer,因此复杂性在于最短列表的大小 O(n)在哪里n

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

把它看成是一个循环,增加1个更多的参数zip将增加O(1)在每次迭代中,或者O(n)在所有n迭代。(假设最小的参数是size n
例如,zip(X1,X2,...,Xm)您在做O(mn)工作,但m它是常量,所以是O(n)。(再次假设参数的最小大小为n