簡體   English   中英

Python:如何將每個負數變成零?

[英]Python: How can I turn every negative number into a zero?

我正在嘗試一個練習,希望我返回一個包含除負數之外的所有相同元素的新列表,這些負數在返回的列表中變為零。

我使用了for循環遍歷參數列表,如果數字小於0,則將其附加到新列表中,但將其乘以0。但是,我得到了奇怪的輸出,例如空列表。 例如,下面的代碼應打印:

  1. [0,0,9,0,0,34,1]

  2. [9,34,1]

  3. [0,0,0]

請堅持使用列表方法。

編碼:

def get_new_list_no_negs(num_list):
    new_list = []
    for i in range(len(num_list)):
        if i < 0:
            new_list.append(num_list[i] * 0)
    return new_list

def main():
    print("1.", get_new_list_no_negs([-3, -6, 9, 0, 0, 34, 1]))
    print("2.", get_new_list_no_negs([9, 34, 1]))
    print("3.", get_new_list_no_negs([-9, -34, -1]))
main()

應該這樣做:

def get_new_list_no_negs(num_list):
    return [max(num, 0) for num in num_list]

max函數是python內置函數,將在傳遞的數字之間返回最大值。

嘗試這個

l = [-2, -1, 0, 1, 2]

# this
l = [i for i in l if i > 0 else 0]
# or
l = [max(i, 0) for i in l]

enumerate()函數向可迭代對象添加一個計數器。

因此,對於游標中的每個元素,都使用(計數器,元素)產生一個元組; for循環分別將其綁定到row_number和row。

l = [-2, -1, 0, 1, 2]

for index, value in enumerate(l):
    if value < 0:
        l[index] = 0

print(l)

O / P:

[0, 0, 0, 1, 2]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM