在一个练习中,我被要求重新组织一个元组。鉴于元组: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
对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))
您的代码可以改进如下
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
。