python - 使用 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 循环一样?那么列表理解本身呢?
谢谢你的帮助!
解决方案
您正在迭代 list A
,一旦每一步都添加一个元素B
,所以复杂性是最短列表的大小 在哪里condition
answer
O(n)
n
传递给 zip() 的每个变量是否都像另一个 for 循环一样?
将其视为一个循环,在每次迭代或所有迭代中zip
再添加1 个参数。(假设最小的参数是 size )
例如,对于你正在做的工作,但它是恒定的,所以它是. (再次假设参数的最小尺寸是)O(1)
O(n)
n
n
zip(X1,X2,...,Xm)
O(mn)
m
O(n)
n
推荐阅读
- laravel - Laravel 背包中的关系 - 不确定我是否理解
- c++ - 没有连续 1 的位串,使用自顶向下 DP
- python - MacOS Catalina,pip 已安装包但 python 找不到它们?
- wordpress - 如何在 WordPress Post 中上传 Web 记录 Base64 Wave 音频文件(前端形式)
- html - 无法拖放任何链接到如果某些链接已经粘贴到前
- java - 休眠不设置外键
- c# - 如果您不需要强制转换,并且需要检查对象的最具体(运行时)类型,哪个更快?.GetType() & typeof(),还是运算符?
- javascript - 使用隐藏元素抓取动态网站
- c# - 如何在 Visual Studio C# 中获取当前正在运行的应用程序进程?
- kubernetes - 为单个副本设置有状态是否是矫枉过正?