将元组中所有元素的破折号替换为空格?

duc*_*101 1 python tuples

我正在建立这两个问题,因为它们没有完全回答我的问题: 如何更改元组中的值? Python:用空格替换“-”

如果我有一个像这样的元组:

worldstuff = [('Hi', 'Hello-World', 'Earth'), ('Hello-World', 'Hi'), ...]
Run Code Online (Sandbox Code Playgroud)

如何将元组中所有列表中的所有元素的破折号替换为空格?上一个堆栈溢出问题涉及更改元组中一个列表的特定索引,但如果需要替换的元素多次出现,则不会。

我尝试执行以下操作,但不太有效:

worldstuff_new = [x.replace('-', ' ') for x in worldstuff]
Run Code Online (Sandbox Code Playgroud)

但是,如果我对元组中的特定列表执行此操作,则它适用于该元组列表。我试图避免必须做单独的列表,而是尝试一次完成所有事情。

worldstuff_new = [x.replace('-', ' ') for x in worldstuff[0]]
Run Code Online (Sandbox Code Playgroud)

我知道元组是不可变的,这就是为什么我很难弄清楚这一点。这可能吗?将不胜感激任何帮助 - 谢谢。

Pie*_*e D 5

正确表达:

a = [('Hi', 'Hello-World', 'Earth'), ('Hello-World', 'Hi')]
b = [tuple([x.replace('-', ' ') for x in tup]) for tup in a]

>>> b
[('Hi', 'Hello World', 'Earth'), ('Hello World', 'Hi')]
Run Code Online (Sandbox Code Playgroud)

一些注意事项:

  1. 请不要破坏内置函数 ( tuple)。
  2. 你拥有的实际上不是一个元组,而是一个元组列表。
  3. 正如您所注意到的,tuples 是不可变的;但您始终可以从原始元组构建新元组。
  4. (速度)为什么tuple([x.replace ...])使用(列表理解的元组)而不是tuple(x.replace ...)(生成器的输出元组)?因为前者速度稍快一些。