
Новичок. Решал: «Напишите функцию modify_list(l), которая принимает на вход список целых чисел, удаляет из него все нечётные значения, а чётные нацело делит на два»
Так работает:
[apcode language=»python»]
1 2 3 4 5 6 7 8 | def modify_list(lst): i = 0 while i < len(lst): if lst[i] & 1: lst.pop(i) else: lst[i] >>= 1 i += 1 |
[/apcode]
А так почему-то(???) нет:
[apcode language=»python»]
1 | def modify_list(lst): lst[:] = [i >>= 1 for i in lst if i & 1] |
[/apcode]
1Ответы

Еще может заинтересовать:

Эту задачу проще решить без битовых операций:
l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def modify_list(lst):
____return [i // 2 for i in lst if i % 2 == 0]
print(l) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(modify_list(l)) #[0, 1, 2, 3, 4, 5]
_ нужно заменить на пробелы
насчет вашего второго варианта почитайте про list comprehension
i >>= 1 — это не будет работать (только i >> 1), потому что такого оператора (>>=) в питоне нет