Так работает:
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]