Python: Как я могу превратить каждое отрицательное число в ноль? - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь выполнить упражнение, чтобы вернуть мне новый список, содержащий все те же элементы, кроме отрицательных чисел, которые в возвращаемом списке превращаются в нули.

Я использовал цикл 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()

Ответы [ 3 ]

2 голосов
/ 08 июня 2019

Это должно сделать:

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

max - это встроенная функция Python, которая будет возвращать наибольшее значение между переданными числами.

0 голосов
/ 08 июня 2019

Функция enumerate () добавляет счетчик к итерируемому.

Таким образом, для каждого элемента в курсоре создается кортеж с (counter, element); цикл 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]
0 голосов
/ 08 июня 2019

Попробуйте это

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]
...