python3:用另一个字符串替换列表中重复字符串项之一:

时间:2018-09-02 05:16:40

标签: python-3.x replace

我的列表中有几个重复的打球项目。我想用另一个字符串项目更改这些项目之一。例如:

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

我想将索引3的'b'更改为'x'

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

2 个答案:

答案 0 :(得分:1)

基本上,列表操作是:

  • a.pop(idx)(将在索引idx上弹出项目)
  • a.insert(idx, val)(将val的值插入位置idx

是的,这是一个定义非常严格的编程问题,有很多未解决的问题:

  1. 重复可以发生2次以上吗?
  2. 仅对第一项进行替换吗?
  3. 替换应使用恒定字符还是序列?

闻起来像作业。如果是这样,请在没有堆栈溢出的情况下执行此操作。

答案 1 :(得分:1)

阅读您的评论似乎并不在乎是否所有重复项都被替换了。因此,您可以使用以下代码一行完成此操作:

a = ['b','c','d','b','b']
new_a = [item if len([c for c in a[:index+1] if c == item]) == 1 else "x" for index, item in enumerate(a)]

print(new_a)

['b','c','d','x','x']

如果您真的只想更新第二个实例,则以下内容也可以在一行中完成:

a = ['b','c','d','b','b']
new_a = [item if len([c for c in a[:index+1] if c == item]) != 2 else "x" for index, item in enumerate(a)]

print(new_a)

['b','c','d','x','b']