2017-05-09 51 views
1

我試着看類似的問題,但我真的不知道如何使用其他問題中提到的方法可以完成此操作。 所以我的問題是:我有一個列表,我想從中刪除某些值。例如:多個如果和如果不在列表理解

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,我只希望發生這種情況。我嘗試了多種解決方案(這裏提出了其他問題)讓它工作。有沒有人有任何建議?

回答

0

另一個條件可以添加到檢查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的情況下才會保留。