【发布时间】:2011-10-30 21:54:39
【问题描述】:
我有一个 Python 字符串列表 - elements。我想编辑elements 中的每个element。请参阅下面的代码(它不起作用,但您会明白的):
for element in elements:
element = "%" + element + "%"
有没有办法做到这一点?
【问题讨论】:
标签: python string list string-operations
我有一个 Python 字符串列表 - elements。我想编辑elements 中的每个element。请参阅下面的代码(它不起作用,但您会明白的):
for element in elements:
element = "%" + element + "%"
有没有办法做到这一点?
【问题讨论】:
标签: python string list string-operations
您可以使用列表推导:
elements = ["%" + e + "%" for e in elements]
【讨论】:
您可以使用列表推导:
elements = ["%{}%".format(element) for element in elements]
【讨论】:
elements = ['%{0}%'.format(element) for element in elements]
【讨论】:
elements = map(lambda e : "%" + e + "%", elements)
【讨论】:
基本上有两种方法可以做您想做的事:编辑您拥有的列表,或者创建一个包含您想要的更改的新列表。目前上面的所有答案都显示了如何使用列表理解(或map())来构建新列表,我同意这可能是要走的路。
另一种可能的方法是遍历列表并就地编辑它。如果列表很大并且您只需要更改一些,您可能会这样做。
for i, e in enumerate(elements):
if want_to_change_this_element(e):
elements[i] = "%{}%".format(e)
但正如我所说,我建议您使用列表理解答案之一。
【讨论】:
这里还有一些例子
char = ['g:', 'l:', 'q:']
for i in range(len(char)):
char[i] = char[i].replace(':', '')
for i in range(len(char)):
char[i] = char[i].strip(':')
def list_cleaner(list_):
return [char_.strip(':') for char_ in list_]
new_char = list_cleaner(char)
print(new_char)
def generator_cleaner(list_):
yield from (char_.strip(':') for char_ in list_)
# Prints all results in once
gen_char = list(generator_cleaner(char))
# Prints as much as you need, in this case only 8 chars
# I increase a bit the list so it makes more sense
char = ['g:', 'l:', 'q:', 'g:', 'l:', 'q:', 'g:', 'l:', 'q:']
# let's call our Generator Function
gen_char_ = generator_cleaner(char)
# We call only 8 chars
gen_char_ = [next(gen_char_) for _ in range(8)]
print(gen_char_)
【讨论】:
Python 3.6+ 版本(f 字符串):
elements = [f'%{e}%' for e in elements]
【讨论】: