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

Posted

技术标签:

【中文标题】从列表中的元组替换字符串【英文标题】:Replace String From Tuple Inside List 【发布时间】:2014-05-29 00:26:43 【问题描述】:

我目前有以下列表:

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

我正在尝试找出一种方法将“..”字符串的所有实例替换为另一个字符串。在我的例子中,字符串 ' '。

我曾尝试通过以下方法使用内置函数,但没有成功。

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

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

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

【问题讨论】:

【参考方案1】:

您可以将list comprehension 与conditional 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')]
>>>

【讨论】:

谢谢!这完美无缺。我知道 s 的变量在哪里起作用,但你能向我解释一下“tup”变量的用途吗? @taytortot - 当然可以。 for tup in data 子句将遍历列表data 中的每个项目(元组)。它将获取每一个,将其存储在变量tup 中,然后将其发送到tuple(s if s != ".." else " " for s in tup) 部分。我将变量命名为tup 来表示“元组”。 @iCodez 如果显示等效的嵌套 for 循环,可能更容易显示 tup 变量的用途。【参考方案2】:

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

将您的代码包装在列表理解中即可:

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

【讨论】:

以上是关于从列表中的元组替换字符串的主要内容,如果未能解决你的问题,请参考以下文章

从列表中的元组中删除空字符串

Pandas 替换列中的值,但 to_replace 参数是包含元组的元组

Python中的元组和列表

如何删除一些额外的元组和列表并在python中的字符串之间打印一些额外的东西?

Python的元组列表截取

从 pandas 数据框中的元组列中删除元素