2016-03-30 20 views
-2

Ben bir listePython'da tüm negatif sayıları sıfıra nasıl değiştiririm?

list1 = [-10,1,2,3,9,-1] 

o

bunu nasıl yapabilirim
list1 = [0,1,2,3,9,0] 

benziyor böylece sıfıra olumsuz numarasını değiştirmek istiyor? Teşekkürler!

+0

@Ageonix kullanabilir ve öyle az buysa bir dizi değil. – Selcuk

+3

Tamam ... seçiminizi yapın. Bu soruyu inceledim ve bu soruya tam anlamıyla cevap veren bir cevapla tam anlamıyla ortaya çıktım. Bunu kullanın: http://stackoverflow.com/questions/19720445/convert-array-of-negative-value-to-positive-value – Ageonix

+0

@Ageonix Çok benzer olduklarına katılıyorum ama yinelenen bir kopyası olmalı . Çok benzer, ancak bir kopyası değil. – Selcuk

cevap

7

kullanabilirsiniz comprehensions: İkinci varyant sadece True == 1 ve False == 0 beri Python 3 ile çalıştığını

list2 = [0 if i < 0 else i for i in list1] 

veya

list2 = [(i > 0) * i for i in list1] 

Not. , Python 2 ile çalışmalıdır ancak garanti yoktur.

+1

Bu, SO üzerinde birkaç kez daha önce yanıtlandı. Örneğin: http://stackoverflow.com/questions/19720445/convert-array-of-negative-value-to-positive-value – Ageonix

+2

Çözümde gerekli olmayan çarpım '' '[(i> 0) * i için ben list1] '' '' '' '' 'çok zaman tüketiyor ve gözlerimde soruya iyi bir Yaklaşım değil - evet bunu çözüyor, ama hoş değil. – user69453

+0

@selcuk, Bence (i> 0) * İyi bir uygulama değil. –

0

Bıkmadan listesi üzerinden ve 0 değişiklik,

def do_the_thing(old_list): 
    new_list = [] 
    for num in old_list: 
     if num < 0: 
      new_list.append(0) 
     else: 
      new_list.append(num) 
    return new_list 
2

Alternatif bir yöntem olarak map fonksiyonunu Bu seferki Numpy ile ilgisi yoktur

map(lambda x: max(x,0),list1) 
İlgili konular