Python 有条件地从数组中删除元素
我想有条件地从任意长度的数组中删除一个元素,例如Python 有条件地从数组中删除元素,python,arrays,list,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在这里,使用列表理解: list = [1, 2, 3, 4, 3, 2, 1]
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在这里,使用列表理解:
list = [1, 2, 3, 4, 3, 2, 1]
condition = 3
newlist = [x for x in list if x < condition]
list=[1,2,3,4,3,2,1]
条件=3
newlist=[x小于条件时列表中x的x]
在这里,使用列表理解:
list = [1, 2, 3, 4, 3, 2, 1]
condition = 3
newlist = [x for x in list if x < condition]
list=[1,2,3,4,3,2,1]
条件=3
newlist=[x小于条件时列表中x的x]
如果您希望修改原始列表,则需要类似于您正在做的事情。如果你想要一个新的列表,下面的一行就可以了
[i for i in llist if i < 3]
[如果i<3,则LIST中的i代表i]
请注意,我已将您的变量重命名为llist,因为
list
是一个内置变量。如果您希望修改原始列表,则需要类似您正在执行的操作。如果你想要一个新的列表,下面的一行就可以了
[i for i in llist if i < 3]
[如果i<3,则LIST中的i代表i]
请注意,由于
list
是一个内置变量,我已将您的变量重命名为llist。您必须坚持使用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])
将numpy导入为np
arr=np.数组([1,2,3,4,3,2,1])
条件=3
条件反射=反射[反射<条件]
>>>打印(条件反射)
数组([1,2,2,1])
您必须坚持使用列表
数据类型吗?你想过使用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])
将numpy导入为np
arr=np.数组([1,2,3,4,3,2,1])
条件=3
条件反射=反射[反射<条件]
>>>打印(条件反射)
数组([1,2,2,1])
您的代码有缺陷。如果您从一个列表开始[1,4,5,1,1]
,您的结果将是[1,5,1,1]
(在捕获索引器之后)。最具python风格的事情是编写工作代码。(如果删除索引2处的项目,则索引3处的项目将滑动以替换它。如果您检查的下一个索引是索引3,则您刚刚跳过了一个项目。索引器
是因为您根据原始大小计算索引。如果删除项目,则索引将指向末尾。)使用list
作为变量名被认为是错误的,因为您的代码有缺陷。如果您从一个列表开始[1,4,5,1,1]
,您的结果将是[1,5,1,1]
(在捕获索引器之后)。最具python风格的事情是编写工作代码。(如果删除索引2处的项目,则索引3处的项目将滑动以替换它。如果您检查的下一个索引是索引3,则您刚刚跳过了一个项目。索引器
是因为您根据原始大小计算索引。如果删除项目,则索引将指向末尾。)使用list
作为变量名称被认为是不好的形式llist[:]=[i for i in llist if i<3]
将是在修改原始列表时执行此操作的一种方法。llist[:]=[i for i in llist if i<3]
将是在修改原始列表时执行此操作的一种方法。