我想有条件地从任意长度的数组中删除一个元素,例如
list = [1, 2, 3, 4, 3, 2, 1]
condition = 3
for i in range(len(list)):
if list[i] >= condition:
list.pop(i)
会导致
list = [1, 2, 2, 1]
是否有更多' pythonic'这样做的方式,比如列表理解?
Thandel
答案 0 :(得分:4)
如果您想要修改原始列表,您需要像您正在做的事情。如果你想要一个新的列表,下面的一个班轮工作
[i for i in llist if i < 3]
请注意,我已将您的变量重命名为llist,因为list
是内置的。
答案 1 :(得分:1)
在这里,您可以使用列表理解:
list = [1, 2, 3, 4, 3, 2, 1]
condition = 3
newlist = [x for x in list if x < condition]
答案 2 :(得分:0)
您是否必须坚持使用list
数据类型?你有没有想过使用numpy数组?
numpy的pythonic方式看起来像这样:
import numpy as np
arr = np.array([1, 2, 3, 4, 3, 2, 1])
condition = 3
conditioned_arr = arr[arr < condition]
>>> print(conditioned_arr)
array([1, 2, 2, 1])