有条件地从数组中删除元素

时间:2017-05-10 13:49:11

标签: python arrays list

我想有条件地从任意长度的数组中删除一个元素,例如

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

3 个答案:

答案 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])