我在讨论这两个问题,因为它们没有完全回答我的问题: 如何在元组中更改值? Python:用空格替换"-“
如果我有一个这样的元组:
worldstuff = [('Hi', 'Hello-World', 'Earth'), ('Hello-World', 'Hi'), ...]
如何用空格替换元组中所有列表中的所有元素?前面的堆栈溢出问题涉及更改元组中一个列表的特定索引,但如果需要替换的元素有多个出现,则不更改。
我试着做了以下工作,但效果不太好:
worldstuff_new = [x.replace('-', ' ') for x in worldstuff]
但是,如果我对元组中的特定列表执行此操作,则对该元组列表有效。我试图避免做单独的列表,而不是一次做所有的事情。
worldstuff_new = [x.replace('-', ' ') for x in worldstuff[0]]
我知道元组是不可变的,这就是为什么我很难弄清楚这一点。这个是可能的吗?会很感激你的帮助-谢谢。
正确表达:
a = [('Hi', 'Hello-World', 'Earth'), ('Hello-World', 'Hi')]
b = [tuple([x.replace('-', ' ') for x in tup]) for tup in a]
[('Hi', 'Hello World', 'Earth'), ('Hello World', 'Hi')]
几个注意事项:
tuple
)。
tuple
是不可变的;但是您可以从原始元组构建新的元组。
tuple([x.replace ...])
(列表理解的元组)而不是
tuple(x.replace ...)
(生成器输出的元组)?因为前者稍微快一点。
首先,不要将任何变量命名为
tuple
--这是一个内置函数,当您命名变量
tuple
时,您忽略了该
method
def changer(data):
if type(data) == str:
return data.replace("-", " ")
elif type(data) == list:
return [changer(x) for x in data]
elif type(data) == tuple:
return tuple(changer(x) for x in data)
tpl = [('Hi', 'Hello-World', 'Earth'), ('Hello-World', 'Hi')]
changer(tpl)
产出:
[('Hi', 'Hello World', 'Earth'), ('Hello World', 'Hi')]