如何将指定Python列表推导式转换为等效的for循环代码
等效for循环写法
你给出的列表推导式代码的作用是将列表l中的非0元素按原有顺序放在前半段,所有0元素按原有顺序放在后半段,等效的for循环有两种常见实现:
1. 与原代码逻辑完全一致的实现(两次遍历)
原代码本质是两次遍历l分别筛选非0、0元素后拼接,等效代码如下:
lst = [] # 追加所有非0元素,对应第一个列表推导式 for x in l: if x != 0: lst.append(x) # 追加所有0元素,对应第二个列表推导式 for x in l: if x == 0: lst.append(x)
2. 性能优化版实现(仅一次遍历)
如果希望减少遍历次数提升效率,可以用单次遍历分别存储两类元素再拼接,最终效果和原代码完全一致:
non_zero_list = [] zero_list = [] for x in l: if x != 0: non_zero_list.append(x) else: zero_list.append(x) lst = non_zero_list + zero_list
内容的提问来源于stack exchange,提问作者Urszula Zalevski Glowacka
相关产品推荐
相关产品推荐

