У меня возникла проблема с тем, что я не понимаю, как работает код itertools.takewhile().itertools.takewhile() доступ к следующему элементу в python
import itertools
z = [3,3,9,4,1]
zcycle = itertools.cycle(z)
next_symbol = zcycle.next()
y = list(itertools.takewhile(lambda symbol: symbol == next_symbol or symbol == 9, zcycle))
print y
мой код предположит, чтобы дать мне элементы списка с самого начала, если они одинаковы, или если элемент равен 9. Поэтому, как только мы попали элемент, который отличается от предыдущего, мы должны остановиться.
Я ожидал, что результатом будет [3, 3]
, но вместо этого я получил [3, 9]
. Почему мы пропустили самый первый элемент списка? и возможно ли как-то получить выход равным [3, 3, 9]
?
Если вход 'г = [3, 3, 9, 9, 3, 4, 1]' , что вы ожидаете от вывода? '[3, 3, 9]'? '[3, 3, 9, 9]'? '[3, 3, 9, 9, 3]'? – DainDwarf
[3, 3, 9, 9, 3] –
Почему вы ожидали [3, 3] вместо [3, 3, 9]? –