Python 获取列表中重复元素的单个索引号

Python 获取列表中重复元素的单个索引号,python,list,loops,arraylist,indexing,Python,List,Loops,Arraylist,Indexing,我想把这个“RqaEzty”变成这个“R-Qq-Aaa-Eeee-Zzzzz-Tttttt-yyyyyyyy”。它基本上打印出一封信的次数与它的索引相同。 我创建了以下方法,但有一个错误。 每次一个字母在输入中出现两次或两次以上,我的输出都是错误的,因为我的代码对第一次出现的字母和第二次出现的相同字母采用相同的索引 例如,“ZpglnRxqenU”应为 “Z-Pp-Ggg-Llll-Nnnnn-rrrrr-Xxxxxxx-qqqqqqqqqqqqeeeee-nnnnnn-uuuuuuu” 但我得

我想把这个“RqaEzty”变成这个“R-Qq-Aaa-Eeee-Zzzzz-Tttttt-yyyyyyyy”。它基本上打印出一封信的次数与它的索引相同。 我创建了以下方法,但有一个错误。 每次一个字母在输入中出现两次或两次以上,我的输出都是错误的,因为我的代码对第一次出现的字母和第二次出现的相同字母采用相同的索引

例如,“ZpglnRxqenU”应为

“Z-Pp-Ggg-Llll-Nnnnn-rrrrr-Xxxxxxx-qqqqqqqqqqqqeeeee-nnnnnn-uuuuuuu” 但我得到:

“Z-Pp-Ggg-Llll-Nnnnn-RRRRR-Xxxxxxx-QQQQQQQQEEEEE-Nnnnn-UUUU” 因为我的代码第一个“n”的索引与第二个“n”的索引相同

我的想法是在“for循环”中实现一个if函数,以控制一个字母是否出现多次,如果是,则输出第二个(或第三个或第四个…)字母的索引

我的问题:
如何将副本的索引作为单个值输出?

您可以迭代索引本身,而不是每次都查找索引:

for i in range(len(x)):
    y = x[i];
    amount = 1 + i
    word = y * amount
    s += word.capitalize() + "-"

您可以迭代索引本身,而不是每次都查找索引:

for i in range(len(x)):
    y = x[i];
    amount = 1 + i
    word = y * amount
    s += word.capitalize() + "-"

可以使用计数器变量代替(x.index(y))


它将解决错误

您可以使用计数器变量代替(x.index(y))


它将解决错误

如果需要增加每一步的值,可以使用
enumerate()

那就行了

def accum(s):
    x = list(s)
    s = ""
    for idx, y in enumerate(x):
        amount = 1 + idx
        word = y * amount
        s += word.capitalize() + "-"
    s = s.rstrip('-')
    print(s)

如果需要增加每个步骤的值,可以使用
enumerate()

那就行了

def accum(s):
    x = list(s)
    s = ""
    for idx, y in enumerate(x):
        amount = 1 + idx
        word = y * amount
        s += word.capitalize() + "-"
    s = s.rstrip('-')
    print(s)

更好的选择是使用
enumerate
builtin,它用索引装饰值,因此
对于枚举(x)中的i,y:
将提供您所需的一切。更好的选择是使用
enumerate
builtin,它用索引装饰值,因此
对于枚举(x)中的i,y:
将提供您所需的一切。无需将
s
转换为列表,python字符串是可编辑的。无需将
s
转换为列表,python字符串是可编辑的。