我有一个名为ID
的数据列表,以及另一个名为Dates
的列表。它们是配对数据,列表长度相等,每个长约800,000个项目。我想对每个列表中的每个项目进行配对,将它们放入元组中,并将这些元组添加到另一个列表中。即:
ID = [1,2,3,4,...]
Dates = [2012-04-05, 2012-04-07, 2012-04-08, 2012-04-09,...]
ID_Datetime = [(1,2012-04-05), (2,2012-04-07), (3,2012-04-08), (4,2012-04-09)...]
这是我的尝试。它似乎工作,但当我试图在实际列表上使用它时,我的计算机崩溃,因为它无法处理数据。
def list_combine():
for i in ID:
for j in Dates:
ID_Datetime.append((i, j))
有关更快速的方法的任何提示吗?
答案 0 :(得分:2)
您正在寻找zip
函数,该函数将返回(在Python 3中)您可以迭代的zip对象:
>>> ID = [1,2,3,4]
>>> DateTime = ['2012-04-05', '2012-04-07', '2012-04-08', '2012-04-09']
>>> zip(ID, DateTime)
<zip object at 0x012EC828>
如果您想要完整列表,也可以在对象上调用list
:
>>> list(zip(ID, DateTime))
[(1, '2012-04-05'), (2, '2012-04-07'), (3, '2012-04-08'), (4, '2012-04-09')]
答案 1 :(得分:0)
使用itertools模块中的izip。这会从列表中创建一个迭代器而不是构建另一个迭代器,这样可以节省内存。