1

在一个练习中,我被要求重新组织一个元组。给定元组: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
4

2 回答 2

3

试试这个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))
于 2021-10-08T08:43:58.967 回答
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.

于 2021-10-08T08:49:39.510 回答