在python中基于列表解析的条件上跳过元素

Vin*_*yil 11 python list-comprehension list python-2.7 python-3.x

我有一个清单列表:

List = [-2,9,4,-6,7,0,1,-4]
Run Code Online (Sandbox Code Playgroud)

对于列表中小于零(0)的数字,我想跳过这些数字并形成另一个列表.

例:-

List = [9,4,7,0,1]
Run Code Online (Sandbox Code Playgroud)

这是我的一种怀疑,不确定如果我们能够实现.如果有可能实现,任何人都可以在这里发布.

ett*_*any 28

你有很多选择来实现这一目标.通过列表理解,您可以:

my_list = [i for i in my_list if i>=0]
Run Code Online (Sandbox Code Playgroud)

用filter():

my_list = filter(lambda i: i>=0, my_list)
Run Code Online (Sandbox Code Playgroud)

注意:

在Python 3中,filter()返回一个filter对象(不是list),将其转换为一个列表,你可以这样做:

my_list = list(filter(lambda i: i>=0, my_list))
Run Code Online (Sandbox Code Playgroud)

  • 每当你需要为`filter()`写一个lambda时,它应该是一个列表理解. (4认同)

Sak*_*sow 6

首先使用小写的变量名,第二次不使用,list因为它保留了名称.

然后在列表理解中做一个if

my_list = [i for i in init_list if i >= 0 ]
Run Code Online (Sandbox Code Playgroud)