@Smeilz1
За любое развитие

Почему не работает функция преобразование списка?

Даю на вход функции список, который она преобразовывает:
1)Сначала оставляет только четные числа
2)Нацело делит оставшиеся четные числа на 2
Функция ничего не делает со списком, подскажите почему так?
Ввожу 2 3 4. Ожидаю результат [1, 2], а по факту тот же список [2, 3, 4]
def modify_list(l):
    m =[]
    for z in l:
        if  z % 2 == 0:
            m.append(int(z // 2))
    return m
l = [int(i) for i in input().split()]
modify_list(l)
print(l)
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
@fireSparrow
Работает для третьей версии питона:
def modify_list(l):
    tmp = [el for el in l if not el%2]
    l.clear()
    l.extend(tmp)
    for i in range(len(l)):
        l[i] //= 2
    
    
l = [int(i) for i in input().split()]
modify_list(l)
print(l)


PS: Кстати, PEP8 настоятельно рекомендует никогда не использовать l в качестве однобуквенного имени переменной. Лучше использовать другое имя, или, в крайнем случае, использовать заглавную L.

Never use the characters 'l' (lowercase letter el), 'O' (uppercase letter oh), or 'I' (uppercase letter eye) as single character variable names.

In some fonts, these characters are indistinguishable from the numerals one and zero. When tempted to use 'l', use 'L' instead.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
def modify_list(l):
    m =[]
    for z in l:
        if  z % 2 == 0:
            m.append(int(z // 2))
    return m
l = [int(i) for i in input().split()]
a = modify_list(l)
print(a)
Ответ написан
@CulHatsker
Маслину поймал
Вы принтуете исходный список, а не изменённый.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы