多个if if if if not in in list comprehension

时间:2017-05-09 14:21:39

标签: list python-3.x if-statement

我试着看一下类似的问题,但我真的不明白如何使用其他问题中提到的方法来实现这一目标。 所以我的问题是:我有一个列表,我想从中删除某些值。例如:

a = [[[0,0],[0,1]],[[0,0],[0,1]]]
for y in range(2):
    a[y][:] = [x for x in a[y] if not random.random() < s]

这将删除random.random()低于s的元素(s介于0和1之间)。但是,如果列表中每个元素的第二个位置(即[0,0]位)等于1,我只希望发生这种情况。我尝试了多个解决方案(这里提出了其他问题)我可以&# 39;让它发挥作用。有没有人有任何建议?

1 个答案:

答案 0 :(得分:1)

可以添加另一个条件来检查第二个&#34; bit&#34;的值。 xx[1] == 0):

a = [[[0,0],[0,1]],[[0,0],[0,1]]]
for y in range(2):
    a[y][:] = [x for x in a[y] if x[1] == 0 or random.random() >= 0.5]

这意味着如果x[1] == 0,则保留该对,而不管随机值如何。否则,仅在random.random() >= 0.5时保留。