Python:如何将每个负数都变成零?

Python:如何将每个负数都变成零?,python,list,for-loop,append,Python,List,For Loop,Append,我正在尝试一个练习,希望我返回一个新列表,该列表包含所有相同的元素,除了返回列表中变为零的负数 我使用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

我正在尝试一个练习,希望我返回一个新列表,该列表包含所有相同的元素,除了返回列表中变为零的负数

我使用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):
    新列表=[]
    对于范围内的i(len(num_列表)):
    如果i<0:
    新增列表。追加(num\u list[i]*0)
    返回新列表
    def main():
    打印(“1.”,获取新列表\u否负([-3,-6,9,0,0,34,1]))
    打印(“2.”,获取新列表,无负([9,34,1]))
    打印(“3.”,获取新列表编号负([-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]
    #这个
    l=[如果i>0,则i代表l中的i,否则为0]
    #或
    l=[l中i的最大值(i,0)]
    
    该函数向iterable添加一个计数器

    因此,对于游标中的每个元素,都会生成一个元组(counter,element);for循环分别将其绑定到行号和行

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