用“x”替换列表中的重复值?

我试图了解创建一个函数的过程,该函数可以替换字符串列表中的重复字符串。例如,我想转换这个列表


mylist = ['a', 'b', 'b', 'a', 'c', 'a']

对此


mylist = ['a', 'b', 'x', 'x', 'c', 'x']

最初,我知道我需要创建我的函数并遍历列表


def replace(foo):

    newlist= []

    for i in foo:

        if foo[i] == foo[i+1]:

            foo[i].replace('x')

    return foo

但是,我知道这有两个问题。首先是我收到一个错误说明


list indices must be integers or slices, not str

所以我相信我应该在这个列表的范围内进行操作,但我不确定如何实现它。另一个是,如果重复的字母在我的迭代 (i) 之后直接出现,这只会对我有帮助。


不幸的是,这就是我对问题的理解。如果有人可以为我提供有关此程序的说明,我将不胜感激。


红颜莎娜
浏览 149回答 3
3回答

Cats萌萌

简单的解决方案。my_list = ['a', 'b', 'b', 'a', 'c', 'a']new_list = []for i in range(len(my_list)):    if my_list[i] in new_list:        new_list.append('x')    else:        new_list.append(my_list[i])print(my_list)print(new_list)# output#['a', 'b', 'b', 'a', 'c', 'a']#['a', 'b', 'x', 'x', 'c', 'x']

慕容森

简单的解决方案。my_list = ['a', 'b', 'b', 'a', 'c', 'a']new_list = []for i in range(len(my_list)):    if my_list[i] in new_list:        new_list.append('x')    else:        new_list.append(my_list[i])print(my_list)print(new_list)# output#['a', 'b', 'b', 'a', 'c', 'a']#['a', 'b', 'x', 'x', 'c', 'x']

慕斯王

其他解决方案使用索引,这不一定是必需的。真的很简单,你可以检查if值是in新列表,else你可以appendx. 如果你想使用一个函数:old = ['a', 'b', 'b', 'a', 'c']def replace_dupes_with_x(l):    tmp = list()    for char in l:        if char in tmp:            tmp.append('x')        else:            tmp.append(char)    return tmpnew = replace_dupes_with_x(old)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python