Как применить функцию if для каждого элемента в списке?

#python #python-3.x #list

#python #python-3.x #Список

Вопрос:

У меня есть list1 = [3,4,5,6,7,8] . Я хочу добавить к list2 такому, Add 10 чтобы even number и multiply with 5 если это нечетное число в list1 with Python.

Я пробовал это

 list1 = [3, 4, 5, 6, 7, 8]

list2 = []

for num in list1:
    if (num%2) == 0:
        num   10
        list2.append(num)
    else:
        num*5
        list2.append(num)

list2
 

Комментарии:

1. num 10 и num*5 создавать новые целочисленные объекты, которые немедленно отбрасываются. Они не изменяют целое число, на которое ссылается num , действительно, целые числа неизменяемы

2. Вы имеете в виду num = num 10 и num = num*5 ?

3. с какой ошибкой вы столкнулись? пожалуйста, опишите подробнее

4. что я должен использовать вместо этого? 🙁

Ответ №1:

понял…

 import numpy as np

list1 = [3, 4, 5, 6, 7, 8]

list2 = []

for num in list1:
    if (num%2) == 0:
        x = num   10
        list2.append(x)
    else:
        x = num*5
        list2.append(x)

list2
 

Комментарии:

1. хорошо поработал над самостоятельной отладкой проблемы :). Проверьте также наши другие решения и посмотрите, какие из них помогут вам лучше понять проблему. Кроме того, я добавил альтернативное решение для вашей пользы. 🙂

2. спасибо, Акшай, я решил это на основе вашего ответа, вы напомнили мне, что я не сохранял никакого значения, lol.

3. рад помочь :). Отметьте ответ, который, по вашему мнению, сработал для вас!

4. Я сделал, lol, но для репутации ниже 15 stackoverflow не покажет ее :/

5. Не беспокойтесь, вы скоро доберетесь туда 🙂

Ответ №2:

Вы не сохраняете num 10 или num*5 нигде. Попробуйте это —

 list1 = [3, 4, 5, 6, 7, 8]

list2 = []

for num in list1:
    if (num%2) == 0:
        list2.append(num   10) #<----
    else:
        list2.append(num*5)    #<----
        
list2
 
 [15, 14, 25, 16, 35, 18]
 

Вы также можете попробовать использовать понимание списка, которое представляет собой однострочник, который выполняет то же самое, что и выше —

 list2 = [num 10 if (num%2)==0 else num*5 for num in list1]
 
 [15, 14, 25, 16, 35, 18]