我正在尝试一个练习,希望我返回一个包含除负数之外的所有相同元素的新列表,负数在返回的列表中变为零。
我使用了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()
答案 0 :(得分:2)
这应该做:
def get_new_list_no_negs(num_list):
return [max(num, 0) for num in num_list]
max
函数是一个内置的python,它将在传递的数字之间返回最大的数字。
答案 1 :(得分:0)
尝试一下
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]
答案 2 :(得分:0)
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]