从列表中的元组替换字符串

5 投票
2 回答
15007 浏览
提问于 2025-04-18 02:44

我现在有以下这个列表:

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

我想找个办法把所有的'..'这个字符串替换成另一个字符串。在我的例子中,就是把它替换成' '。

我试过用内置的函数,按照下面的方法去做,但没有成功。

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

有人能给我指个方向吗?我想要的结果是这样的:

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

2 个回答

3

Map这个东西是对列表里的每一个元素进行操作的。所以在你这个例子里,你的lambda表达式是作用在一个元组上,而不是你想要的那个元组里的每个元素。

如果把你的代码放在一个列表推导式里就可以解决这个问题:

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

你可以使用一种叫做 列表推导式 的方法,结合一个 条件表达式 来实现你的需求:

>>> 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')]
>>>

撰写回答