1

这可能是一个初学者问题,但我不知道如何搜索答案(因为我无法“命名”问题)

我有 2 个列表或 2 个列表的元组

xxx = ["time1", "time2", "time3"]
yyy = ["value1", "value2", "value3"]
zzz=(xxx,yyy)

现在我想为每个条目结果创建一个列表/元组

[['time1', 'value1'], ['time2', 'value2'], ['time3', 'value3']]

我可以使用 for 循环(和 zip)来做到这一点,但没有“更好”的解决方案吗?这是一个类似的问题,但我无法将那里给出的分辨率用于我的问题

4

2 回答 2

11

使用内置zip函数:

 zzz = zip(xxx, yyy) 

当然,这会创建一个元组列表(或 python3.x 中的一个元组迭代)。如果你真的想要一个列表列表:

 #list (python2.x) or iterable(python3.x) of lists
 zzz = map(list,zip(xxx,yyy)) 

或者

 #list of lists, not list of tuples
 #python 2.x and python 3.x
 zzz = [ list(x) for x in zip(xxx,yyy) ]

如果您使用的是 python3.x 并且您想确保它zzz是一个列表,则列表综合解决方案将起作用,或者您可以从zip产生的迭代构造一个列表:

#list of tuples in python3.x.  
zzz = list(zip(xxx,yyy)) #equivalent to zip(xxx,yyy) in python2.x
                         #will work in python2.x, but will make an extra copy.
                         # which will be available for garbage collection
                         # immediately
于 2012-09-06T14:09:32.537 回答
0

我注意到您的数据包括时间戳和数字。如果您正在进行数字密集型计算,那么 numpy 数组可能值得一看。它们提供更好的性能,并且转置非常简单。(arrayname.transpose()甚至arrayname.T

于 2012-09-06T16:21:54.910 回答