![]() |
会搭讪的大葱 · 生态环境部召开1月例行新闻发布会_中华人民共 ...· 7 月前 · |
![]() |
怕老婆的泡面 · 【墨魂】李清照 小阁藏春 ...· 1 年前 · |
![]() |
个性的鸡蛋 · 一个烂风的微博_微博· 1 年前 · |
![]() |
礼貌的皮带 · 山寨蔚来的“爱驰汽车”要吊打蔚来 - 知乎· 1 年前 · |
我在讨论这两个问题,因为它们没有完全回答我的问题: 如何在元组中更改值? 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')]