Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 14, 2019 23:40:55

udeep
Зарегистрирован: 2019-11-14
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Битовые операции

Решал: «Напишите функцию modify_list(l), которая принимает на вход список целых чисел, удаляет из него все нечётные значения, а чётные нацело делит на два»

Так работает:

 def modify_list(lst):
    i = 0
    while i < len(lst):
        if lst[i] & 1:
            lst.pop(i)
        else:
            lst[i] >>= 1
            i += 1

А так почему-то(???) нет:
 def modify_list(lst): lst[:] = [i >>= 1 for i in lst if i & 1]

И “полная ерунда” при:
 def modify_list(lst): lst[:] = [i // 2 for i in lst if i & 1]

Отредактировано udeep (Ноя. 15, 2019 00:13:18)

Офлайн

#2 Ноя. 15, 2019 09:09:33

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Битовые операции

udeep
А так почему-то(???) нет:

может я чего-то не понял, но в случае “так работает” вы удаляете из списка если item & 1
а в случае “А так почему-то нет” вы добавляете в список при том же условии



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version