[英]Python: How can I turn every negative number into a zero?
我正在嘗試一個練習,希望我返回一個包含除負數之外的所有相同元素的新列表,這些負數在返回的列表中變為零。
我使用了for循環遍歷參數列表,如果數字小於0,則將其附加到新列表中,但將其乘以0。但是,我得到了奇怪的輸出,例如空列表。 例如,下面的代碼應打印:
[0,0,9,0,0,34,1]
[9,34,1]
[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.