【问题标题】:Remove parantheses inside tuple [duplicate]删除元组内的括号[重复]
【发布时间】:2018-05-13 08:06:24
【问题描述】:

我有一个元组列表:

listoftuples = [(('elementone', 'elementtwo'), 'elementthree')(....

现在我想将此列表输出为:

listoftuples = [('elementone', 'elementtwo', 'elementthree')(....

我怎样才能去掉那些多余的括号? 我试图剥离它们不起作用。

【问题讨论】:

  • 不要认为是去掉括号;你不是在操作一个字符串。
  • 不清楚您的对象是什么。你的语法不正确'elementthree')(....
  • 或者那个:stackoverflow.com/questions/47431752/…。目前还不清楚放置所有 3 个重复链接是否可行

标签: python python-3.x list tuples strip


【解决方案1】:

如果深度为2,则可以使用itertools:

import itertools
listoftuples = [(('elementone', 'elementtwo'), 'elementthree')]
final_list = [tuple(itertools.chain.from_iterable([i] if not isinstance(i, tuple) else i for i in b)) for b in listoftuples]

输出:

[('elementone', 'elementtwo', 'elementthree')]

但是,对于任意深度,最好使用递归:

def flatten(s):
   if not isinstance(s, tuple):
      yield s
   else:
      for b in s:
          for i in flatten(b):
              yield i


listoftuples = [(('elementone', 'elementtwo'), 'elementthree')]
final_list = map(tuple, map(flatten, listoftuples))

输出:

[('elementone', 'elementtwo', 'elementthree')]

【讨论】:

    猜你喜欢
    • 2019-12-30
    • 1970-01-01
    • 2017-05-06
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多