重新组织列表/元组结构

2024-09-30 14:34:00 发布

您现在位置:Python中文网/ 问答频道 /正文

在一个练习中,我被要求对一个元组进行重新排序。给定元组:temp = ( ("mandag", 16.0), ("tirsdag", 13.0), ("onsdag", 14.0), ("torsdag", 13.0), ("fredag", 15.0), ("lørdag", 13.0), )

我应该编写一个名为data_reorganize的函数,它在打印时输出以下元组:

(('mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'),(16.0, 13.0, 14.0, 13.0, 15.0, 13.0))

我已经做到了这一点,但我的代码似乎太长太粗:

def data_reorganize(a):
    x = []
    y = []
    for i in a:
        x.append(i[1])
    x = tuple(x)
    for i in a:
        y.append(i[0])
    y = tuple(y)
    return y,x

Tags: infordata排序temp元组appendtuple
2条回答

您的代码可能会改进如下

def data_reorganize(a):
    x = []
    y = []
    for i in a:
        x.append(i[1])
        y.append(i[0])
    return tuple(y), tuple(x)

说明:我将两个独立的for i in a集成到单个数据类型中,并将到所需数据类型的转换移动到return

使用zip*解包操作符尝试此操作。这种方法最好的一点是它是可逆的。在输出上再次使用此选项以返回初始输入!-

output = tuple(zip(*temp))
output
(('mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'),
 (16.0, 13.0, 14.0, 13.0, 15.0, 13.0))

如您在问题要求中所述,将其作为函数编写-

def data_reorganize(temp: tuple):
    return tuple(zip(*temp))

相关问题 更多 >