Как я могу добавить счетчик итераций для списков в Python? - PullRequest
0 голосов
/ 10 января 2019

Вот мой текущий код:

Моя проблема в том, что я практикую понимание списков, но не понимаю, почему "count + = 1" не работает в таком формате:

[count += 1 for elem in li]
[count += 1 and print(elem) for elem in li]

Однако я могу сделать это в обычном цикле for, как я это делал ниже. Может кто-нибудь объяснить, как я могу выполнить нижеприведенную функцию с пониманием списка?

(Вышеприведенные строки кода с форматом понимания списка не обязательно связаны с аккумуляторами).

def accum(s):
    count = 0
    li = []
    for char in s:
        count += 1
        li.append(char.upper() + char.lower() * (count-1))
    return "-".join(li)

Ответы [ 3 ]

0 голосов
/ 10 января 2019

Понимания принимают выражение в качестве первого элемента; count += 1 является оператором .

Вместо этого используйте enumerate, который берет генератор, выдающий x, и возвращает генератор, выдающий (i, x), где i - индекс:

'-'.join(char.upper() + char.lower() * i for i, char in enumerate(s))
0 голосов
/ 10 января 2019

, если вы хотите сохранить счет в понимании списка Python, используйте enumerate

отметьте это ответы

и попробуйте этот код

"-".join((elem.upper() + elem.lower() * i) for ii, elem in enumerate(li))

0 голосов
/ 10 января 2019
for count,char in enumerate(s):
    li.append(char.upper() + char.lower() * (count-1))

используйте enumerate для этого типа вещей

как понимание списка

  [char.upper() + char.lower() * (count-1) for count,char in enumerate(s)]
...