如何在Python中添加迭代计数以列出理解?

时间:2019-01-10 04:34:26

标签: python python-3.x list-comprehension

这是我当前的代码:

我的问题是,我正在练习列表理解,但是对于为什么“ 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 :(得分:1)

理解力以表达式作为其第一要素; count += 1声明

相反,使用enumerate,它将生成x的生成器并返回生成(i, x)的生成器,其中i是索引:

'-'.join(char.upper() + char.lower() * i for i, char in enumerate(s))

答案 1 :(得分:0)

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)]

答案 2 :(得分:0)

如果您想维护python列表理解中的计数,请使用enumerate

选中此answers

并尝试此代码

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