def modify_list(lst): i = 0 while i < len(lst): if lst[i] % 2 == 0: lst[i] //= 2 i += 1 else: lst.pop(i)
def modify_list(lst): i = 0 while i < len(lst): if lst[i] % 2 == 0: lst[i] //= 2 i += 1 else: lst.pop(i)
py.user.next
>>> def f(lst):
… i, n = 0, len(lst)
… while i < n:
… if lst % 2:
… lst.pop(i)
… n -= 1
… else:
… lst = int(lst / 2)
… i += 1
…
>>> lst =
>>> f(lst)
>>> lst
>>>
def f(lst): lst[:] = (k//2 for k in lst if not k&1)
NotDeadAlready
Синтаксис Питона сосредоточил в себе несуразности Лиспа и Фортрана. – Ларри Уолл, создатель Перла.
doza_and
Я в недоумении.def strange_function(a): for i in range(len(a))[::-1]: if (a[i]%2)>0: a.pop(i) else: a[i]=int(a[i]/2)
for i in range(len(a)) [::-1]
IsemВ функцию передается список. Список модифицируется при помощи генератора.
Ну что вы за люди такие.
def f(lst): lst[:] = (k//2 for k in lst if not k&1)
lst[:]
MrWildВо втором питоне
Зачем тут срез?
>>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(10)[::-1] [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] >>>
>>> range(10) range(0, 10) >>> range(10)[::-1] range(9, -1, -1) >>>
>>> range(10) range(0, 10) >>> >>> reversed(range(10)) <range_iterator object at 0xb7581de8> >>> list(_) [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] >>>
MrWildЭто имя внутри функции и привязывание этого внутреннего имени к новому объекту, либо это взятие объекта по внутреннему имени и изменение этого объекта.
Какая разница между lst и просто lst
>>> def f(name): ... name = [3, 4, 5] ... >>> lst = [1, 2, 3] >>> >>> lst [1, 2, 3] >>> >>> f(lst) >>> >>> lst [1, 2, 3] >>> >>> >>> def f(name): ... name[:] = [3, 4, 5] ... >>> >>> lst [1, 2, 3] >>> >>> f(lst) >>> >>> lst [3, 4, 5] >>>
py.user.nextСпасибо большое за ответ.
Но лучше применять reversed()
MrWildУ тебя на каждом шаге цикла i растёт - 0, 1, 2, … . И когда там удаляется элемент в начале, то элементы справа от него сдвигаются влево, и на месте удалённого элемента появляется новый элемент, который надо проверять ещё. Но он не проверяется, потому что наступает следующий шаг и i вырастает, как бы пропуская его.
Единственное, что остается непонятным, так это смыл “переворачивать” индексацию списка.
i = 0
[1, 1, 2, 2, 3, 3, 4, 4] -> 1 надо удалить -> [1, 2, 2, 3, 3, 4, 4]
i = 1
[1, 2, 2, 3, 3, 4, 4] -> 2 надо оставить и поделить -> [1, 1, 2, 3, 3, 4, 4]
i = 2
[1, 1, 2, 3, 3, 4, 4] -> 2 надо оставить и поделить -> [1, 1, 1, 3, 3, 4, 4]
i = 3
[1, 1, 1, 3, 3, 4, 4] -> 3 надо удалить -> [1, 1, 1, 3, 4, 4]
...
NotDeadAlreadyСудя по перманентно выдаваемому на протяжении пяти лет говнокоду вы не осисили ни того, ни другого, ни третьего. Может быть вам немного приумерить пыл и не говорить о том, чего вы не знаете?
Синтаксис Питона сосредоточил в себе несуразности Лиспа и Фортрана. – Ларри Уолл, создатель Перла.
FishHook2014 год же