【问题标题】:How to flatten an irregular tuple of tuples如何展平不规则的元组
【发布时间】:2020-08-21 21:24:24
【问题描述】:

我有一个这样的元组:

(('int', 3), (('int', 50), (('int', 4), ('int', 99))))

我想得到一个这样的扁平元组:

(('int', 3), ('int', 50), ('int', 4), ('int', 99))

元组的嵌套可以是任意的。
我在这里找到的大多数问题都是关于列表的任意展平。

【问题讨论】:

  • 不完全是。但我能够使用这个solution 并进行一些更改以获得所需的解决方案。
  • 您可以将其展平,然后使用 for-loop 将两个元素分组以创建回元组 ('int', 3)。或者获取扁平化代码并使用一些if/else 来检查您是否有带有(text, numer) 的元组并跳过这些元素的扁平化

标签: python tuples flatten


【解决方案1】:

使用任何方法创建展平列表并使用if/else 检查您是否有元组("text", integer),并且不要展平该元素。

def flatten(data):
    # check if you have tuple ("text", integer)
    if isinstance(data, tuple) and len(data) == 2 and isinstance(data[0], str) and isinstance(data[1], int):
        # returns it as tuple with single element: (("text", integer),)
        result = [data]
        #print(data)
        return tuple(result)

    # flatten other elements
    result = []
    for item in data:
        result += flatten(item)
    return tuple(result)

data = (('int', 3), (('int', 50), (('int', 4), ('int', 99))))
data = flatten( data )
print(data)

结果:

(('int', 3), ('int', 50), ('int', 4), ('int', 99))

【讨论】:

    猜你喜欢
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 2012-11-21
    • 2019-02-21
    • 2013-09-01
    • 2017-04-19
    相关资源
    最近更新 更多