从元组内部列表中替换字符串

时间:2014-04-14 21:02:47

标签: python arrays list replace tuples

我目前有以下列表:

data = [('b','..','o','b'),('t','s','..','t')]

我想找到一种方法来替换' ..'的所有实例。字符串到另一个字符串在我的例子中,' '

我尝试使用以下方法使用内置函数,但没有运气。

newData = list(map(lambda i: str.replace(i, ".."," "), data))

有人能指出我正确的方向吗?我想要的输出如下:

newData = [('b',' ','o','b'),('t','s',' ','t')]

2 个答案:

答案 0 :(得分:3)

您可以将list comprehensionconditional expression

一起使用
>>> data = [('b','..','o','b'),('t','s','..','t')]
>>> newData = [tuple(s if s != ".." else " " for s in tup) for tup in data]
>>> newData
[('b', ' ', 'o', 'b'), ('t', 's', ' ', 't')]
>>>

答案 1 :(得分:2)

Map对给定列表中的每个元素进行操作。所以在这种情况下,你的lambda表达式是在一个元组上调用的,而不是你想要的元组元素。

将代码包装在列表解析中会这样做:

newData = [tuple(map(lambda i: str.replace(i, ".."," "), tup)) for tup in data]