对 Python 列表中的每个元素执行字符串操作

我有一个 Python-elements中的字符串列表。我想编辑 elements中的每个 element。看看下面的代码(它不能工作,但是你会明白的) :

for element in elements:
element = "%" + element + "%"

有办法吗?

105004 次浏览

你可以使用列表内涵:

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)

使用 Generator 函数(如果有大量数据,建议使用)

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-string) :

elements = [f'%{e}%' for e in elements]