为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红颜莎娜 2021-11-02 13:57:58
我试图了解创建一个函数的过程,该函数可以替换字符串列表中的重复字符串。例如,我想转换这个列表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) 之后直接出现,这只会对我有帮助。不幸的是,这就是我对问题的理解。如果有人可以为我提供有关此程序的说明,我将不胜感激。
查看完整描述

3 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

简单的解决方案。


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


查看完整回答
反对 回复 2021-11-02
?
慕容森

TA贡献1853条经验 获得超18个赞

简单的解决方案。


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


查看完整回答
反对 回复 2021-11-02
?
慕斯王

TA贡献1864条经验 获得超2个赞

其他解决方案使用索引,这不一定是必需的。


真的很简单,你可以检查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 tmp


new = replace_dupes_with_x(old)


查看完整回答
反对 回复 2021-11-02
  • 3 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信