【发布时间】:2022-11-04 23:17:06
【问题描述】:
我想制作一个接收随机列表并仅存储正数的代码。 但是,如果我使用我编写的代码运行它,我只会得到正数,但顺序是相反的。我应该怎么办?
作为代码示例,显示 [3, 2, 1, 0]。 我想把它打印出来 [0, 1, 2, 3]。
def filter(list):
flist = []
for i in list:
if list[i]>=0:
flist.append(list[i])
else:
continue
return flist
list = [-1,-2,-3,-4,0,1,2,3]
print(filter(list))
【问题讨论】:
-
i不是列表索引,它是列表元素。list[i]不是迭代的当前元素。 -
您是否考虑过列表理解:
[x for x in list if x >= 0] -
当您执行
for i in list时,i 是列表的一个元素,而不是索引,因此您不应该执行flist.append(list[i]),而是使用`flist.append(i)` -
因此,在第一次迭代中,您将附加
list[-1],它是列表的最后一个元素。 -
此外,
list是内置模块中的一个类 - 它是一个变量的糟糕名称。