我试着看一下类似的问题,但我真的不明白如何使用其他问题中提到的方法来实现这一目标。 所以我的问题是:我有一个列表,我想从中删除某些值。例如:
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;让它发挥作用。有没有人有任何建议?
答案 0 :(得分:1)
可以添加另一个条件来检查第二个&#34; bit&#34;的值。 x
(x[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
时保留。