2016-04-28 11 views
-4

私は自分の問題についてインターネット上で調べていますが、助けを見つけることはできません。関数内の正の数を負の数に変更する

問題は、ランダムな番号リストを返してからリストを返す必要がありますが、返されたときには正の値ではなく負の値である必要があります。ここで私は、これまでに作ってみたものです:

def change_sign(list,n): 
    if n in list1: 
     return list1 #Don't know what to put here 
    elif n not in list1: 
     print("The number is not in the list") 

与えられた数(n)がリストに含まれているのであれば、それは同じリストを返す代わりに、負の数をnとすべきです。

これは理にかなっていますが、誰かが私を助ける時間を見つけることができたら非常に感謝しています!

+0

-1を乗算することで負の数を作ることができます。 'n * -1' – Hamms

+1

@ハムム数を否定するために乗算は必要ありません。あなたはちょうどマイナス記号が必要です: '-n' – khelwood

+0

うまくいきます。 – Hamms

答えて

0

は、あなたが何かを行うことができます(負の数は本質的に変わらないリストを返しますか)?

リスト内包表記は非常に強力です!楽しむ!

0

私たちは、新しいリストを返している場合、これはあなたのためにそれを行いますが(も変数として単語リストを使用していない、それは予約語です!):

def change_sign(numbers_list,invert_this_number): 
    inverted_numbers_list = [] 
    for number in numbers_list: 
     if number == invert_this_number: 
      inverted_numbers_list.append(number * -1) 
     else: 
      inverted_numbers_list.append(number) 
    return inverted_numbers_list 


>>> change_sign([-1,1,3],-1) 
[1, 1, 3] 

あなたは、おそらくいくつかを行うことができます整数そのものをビット単位で操作するような、派手な演算子ですが、この単純なコードスニペットで十分です。

1

リストを繰り返し、各項目を指定した番号と比較する必要があります。

def change_sign(list, n): 
    new_list = [] 
    for value in list: 
     if value == n: 
      value = -value 
     new_list.append(value) 

    return new_list 

あなたは、リストの内包表記を使用して、これをクリーンアップすることができます。

def change_sign(list, n): 
    return [value if value != n else -value for value in list] 

あなたがこれを理解していない場合、それは後の練習問題で説明します心配しないでください。

0

どうしても関数形でそれを必要とする場合は、list comprehensionsまたはmap

n = 5 
old_list = [0, 4, 3, -2, 5, -5, 6] 
new_list = [-i if i == n else i for i in old_list] 
# OR 
new_list = map(lambda i: -i if i == n else i, old_list) 

を使用して、新しいリストを返したりすることができます

def func(old_list, n): 
    return [-i if i == n else i for i in old_list] 

は、これらのすべてはnは正の数であることを期待していることに注意してください。これは、あなたの質問に答えるん

def change_sign(list1,n): 
    if n in list1: 
     return [-i if i==n else i for i in list1] 
    elif n not in list1: 
     print("The number is not in the list") 

:あなたはそれが正と負の数を扱うようにしたい場合は

def func(old_list, n): 
    if n <= 0: 
     return old_list[:] 
    return [-i if i == n else i for i in old_list] 
関連する問題