【发布时间】:2019-02-16 12:34:28
【问题描述】:
我想遍历一个字符串列表并用一个单词替换一个字符的每个实例(例如“1”)。我很困惑为什么这不起作用。
for x in list_of_strings:
x.replace('1', 'Ace')
附注,列表中的字符串有多个字符长。 ('黑桃1)
【问题讨论】:
标签: python string python-3.x list list-comprehension
我想遍历一个字符串列表并用一个单词替换一个字符的每个实例(例如“1”)。我很困惑为什么这不起作用。
for x in list_of_strings:
x.replace('1', 'Ace')
附注,列表中的字符串有多个字符长。 ('黑桃1)
【问题讨论】:
标签: python string python-3.x list list-comprehension
您可以使用列表推导:
list_of_strings = [x.replace('1', 'Ace') for x in list_of_strings]
这在 Python 中很自然。直接更改原始列表没有明显的好处;两种方法都有 O(n) 时间复杂度。
您的代码不起作用的原因是str.replace 无法正常工作。它返回一个副本,如mentioned in the docs。您可以遍历 range 对象来修改您的列表:
for i in range(len(list_of_strings)):
list_of_strings[i] = list_of_strings[i].replace('1', 'Ace')
或者使用enumerate:
for idx, value in enumerate(list_of_strings):
list_of_strings[idx] = value.replace('1', 'Ace')
【讨论】:
enumerate 会更好看。