2016-03-30 11 views
-2

私は1つのリストPythonですべての負の数をゼロに変更するにはどうすればよいですか?

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

を持っている私は

list1 = [0,1,2,3,9,0] 

は、どのように私はそれを行うことができますようにそれが見えるようにゼロに負の数を変更したいですか?ありがとう!

+0

@Ageonixを使用することができ、かつそれが少ないということだ場合配列ではありません。 – Selcuk

+3

Ok ...あなたの選択を取る。私はこの質問を見つけ、文字通りこの質問に対する答えの完全なページを思い付いた。これを使用してください:http://stackoverflow.com/questions/19720445/convert-array-of-negative-value-to-positive-value – Ageonix

+0

@Ageonix私は彼らが非常に似ていることに同意しますが、複製は複製でなければなりません。それは非常によく似ていますが、重複しているわけではありません。 – Selcuk

答えて

7

あなたは内包表記を使用することができます。

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

または

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

注第二の変形のみTrue == 1False == 0以来のPython 3で動作していること。 がPython 2で動作するはずですが、保証はありません。

+1

これは既に何度か答えられています。例えば:http://stackoverflow.com/questions/19720445/convert-array-of-negative-value-to-positive-value – Ageonix

+2

解決法 '' '((i> 0)* iの中で必要とされない乗算は、私はlist1]で '' 'は非常に時間が消費され、私の目には良いアプローチではありません - はいそれを解決するが、いいです。 – user69453

+0

@selcuk、私は '(i> 0)* i'は良い習慣ではないと思います。 –

0

反復リストを通って、それが0の変化、それは

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

あなたが代わりmap機能この1つはnumpyのとは何の関係もありません

map(lambda x: max(x,0),list1) 
関連する問題