2016-11-17 76 views
2

我有搜索堆栈溢出和GOOGLE搜索这个问题的解决方案,不幸的是我一直无法找到解决方案。Python - 如何用另一个列表中的字符串值替换列表中存储的字符串值?

我想用另一个列表中的字符串值替换存储在列表中的字符串的值。

比如我有两个列表:

list_a = ['file_x', 'file_x', 'file_x', 'file_x'] 
list_b = ['1', '2', '3', '4'] 

我想要的结果返回:

list_c =['file_1', 'file_2', 'file_3', 'file_4'] 

我是新来的蟒蛇,我努力做到这一点,我一直在使用一个尝试for循环和str.replace(),但我不知道如何匹配每个数组的键值,并将list_a的每个元素的'x'替换为list_b元素的字符串值。

任何帮助,这将不胜感激。

回答

7

使用zip来耦合对应的a s和b s。

>>> list(zip(list_a, list_b)) 
[('file_x', '1'), ('file_x', '2'), ('file_x', '3'), ('file_x', '4')] 

我们可以在方便的使用这个zip对象 for循环,开箱对成独立的变量ab,然后该干嘛a.replace('x', b)和所得到的值追加到我们的结果列表:

>>> list_c = [] 
>>> for a, b in zip(list_a, list_b): 
... list_c.append(a.replace('x', b)) 
... 
>>> list_c 
['file_1', 'file_2', 'file_3', 'file_4'] 

这也可以写成的简短列表理解:

>>> [a.replace('x', b) for a, b in zip(list_a, list_b)] 
['file_1', 'file_2', 'file_3', 'file_4'] 

正如Moinuddin指出,使用格式字符串这里是一个更好的选择,如果你定义的list_a

+0

谢谢!这不仅有助于解决问题,而且还教会了一种处理阵列的新方法。 – Lewis909

+1

@ Lewis909他们是列表:D –

+0

Ahh谢谢,因为Python没有数组,它有列表。 – Lewis909

3

的内容,如果你是一个创造list_a格式。更好的方法是使用{}而不是x并使用str.format()格式化字符串。例如:

>>> list_a = ['file_{}', 'file_{}', 'file_{}', 'file_{}'] 
>>> list_b = ['1', '2', '3', '4'] 
>>> [a.format(b) for a, b in zip(list_a, list_b)] 
['file_1', 'file_2', 'file_3', 'file_4'] 
+0

我会看看str.format()。这与str.replace()有什么不同? – Lewis909

+0

'str.replace('x')'即使它是字符串的一部分,也会替换所有'x'的出现。作为'{}'将把你的价值代替'{}'。 –

+1

@ Lewis909注意到你的字符串也可以包含字面值'{'和'}'(你只需要在格式字符串中将它们加倍;''字符串可以包含{{和}},并且这里只有这个{} ” .format(值)' –

相关问题