如何在python中将单个列表分成多个列表?

时间:2013-11-22 03:48:56

标签: python list python-2.7 numpy

我对python知之甚少。如果我的列表如下所示,

asign=[
[['2013-11-14', 52, None, None], ['2013-11-15', 74, None, None], ['2013-11-16', 189, None, None],['2013-11-17', 27, None, None], ['2013-11-18', 11, None, None], ['2013-11-19', 14, None, None],['2013-11-20', 0, None, None]],
[['2013-11-14', 129, None, None], ['2013-11-15', 113, None, None],['2013-11-16', 58, None, None], ['2013-11-17', 34, None, None], ['2013-11-18', 14, None, None],['2013-11-19', 13, None, None], ['2013-11-20', 0, None, None]],
[['2013-11-14', 56, None, None],['2013-11-15', 75, None, None], ['2013-11-16', 29, None, None], ['2013-11-17', 156, None, None],['2013-11-18', 46, None, None], ['2013-11-19', 85, None, None], ['2013-11-20', 6, None, None]],
[['2013-11-14', 111, None, None], ['2013-11-15', 227, None, None], ['2013-11-16', 166, None, None],['2013-11-17', 145, None, None], ['2013-11-18', 23, None, None], ['2013-11-19', 36, None, None],['2013-11-20', 1, None, None]], 
[['2013-11-14', 22, None, None], ['2013-11-15', 20, None, None],['2013-11-16', 13, None, None],['2013-11-17', 12, None, None], ['2013-11-18', 10, None, None],['2013-11-19', 2, None, None], ['2013-11-20', 6, None, None]], 
[['2013-11-14', 33, None, None],['2013-11-15', 28, None, None], ['2013-11-16', 35, None, None], ['2013-11-17', 14, None, None],['2013-11-18', 14, None, None], ['2013-11-19', 6, None, None], ['2013-11-20', 1, None, None]],
[['2013-11-14', 28, None, None], ['2013-11-15', 35, None, None], ['2013-11-16', 20, None, None],
['2013-11-17', 7, None, None], ['2013-11-18', 15, None, None], ['2013-11-19', 14, None, None],
['2013-11-20', 0, None, None]]  
]

如何将此列表转换为下面的列表?

[
['2013-11-14', 52, None, None, 129, None, None, 56, None, None, 111, None, None,
 22, None, None, 33, None, None, 28, None, None],
['2013-11-15', 74, None, None, 113, None, None, 75, None, None, 227, None, None, 20, None, None, 28, None, None,35, None, None],
['2013-11-16', 189, None, None, 58, None, None, 29, None, None,166, None, None, 13, None, None, 35, None, None, 20, None, None],
['2013-11-17', 27, None, None, 34, None, None, 156, None, None, 145, None, None, 12, None, None,14, None, None, 7, None, None],
['2013-11-18', 11, None, None, 14, None, None, 46, None, None, 23, None, None, 10, None, None, 14, None, None, 15, None, None],
['2013-11-19', 14, None, None, 13, None, None, 85, None, None, 36, None, None, 2, N
one, None, 6, None, None, 14, None, None],
['2013-11-20', 0, None, None, 0, None,None, 6, None, None, 1, None, None, 6, None, None, 1, None, None, 0, None, None]
]

请帮帮我,谢谢!

5 个答案:

答案 0 :(得分:1)

说实话,这听起来像是一个家庭作业问题,但那只是我。我不同意做别人的作业,但是我会帮助你做我想做的事情。我会将每个列表从主列表中分离出来。然后,我会使用if语句对for循环进行排序。请记住,如果您这样做是为了引用您要查找的项目。在if语句之后,将其附加到新列表。我希望这会有所帮助。

答案 1 :(得分:1)

使用numpy

import numpy as np
data = np.array(asign)

np.hstack((data[0], data[1, :, 1:], data[2, :, 1:],
          data[3, :, 1:], data[4, :, 1:], data[5, :, 1:],
          data[6, :, 1:]))

请考虑使用循环为hstack

构建正确的元组参数

答案 2 :(得分:0)

我宁愿选择字典方法。关于python的教程,我建议http://www.afterhoursprogramming.com/tutorial/Python/Overview/

asign=[
[['2013-11-14', 52, None, None], ['2013-11-15', 74, None, None], ['2013-11-16', 189, None, None],['2013-11-17', 27, None, None], ['2013-11-18', 11, None, None], ['2013-11-19', 14, None, None],['2013-11-20', 0, None, None]],
[['2013-11-14', 129, None, None], ['2013-11-15', 113, None, None],['2013-11-16', 58, None, None], ['2013-11-17', 34, None, None], ['2013-11-18', 14, None, None],['2013-11-19', 13, None, None], ['2013-11-20', 0, None, None]],
[['2013-11-14', 56, None, None], ['2013-11-15', 75, None, None], ['2013-11-16', 29, None, None], ['2013-11-17', 156, None, None], ['2013-11-18', 46, None, None], ['2013-11-19', 85, None, None], ['2013-11-20', 6, None, None]],
[['2013-11-14', 111, None, None], ['2013-11-15', 227, None, None], ['2013-11-16', 166, None, None],['2013-11-17', 145, None, None], ['2013-11-18', 23, None, None], ['2013-11-19', 36, None, None],['2013-11-20', 1, None, None]],
[['2013-11-14', 22, None, None], ['2013-11-15', 20, None, None],['2013-11-16', 13, None, None],['2013-11-17', 12, None, None], ['2013-11-18', 10, None, None],['2013-11-19', 2, None, None], ['2013-11-20', 6, None, None]],
[['2013-11-14', 33, None, None], ['2013-11-15', 28, None, None], ['2013-11-16', 35, None, None], ['2013-11-17', 14, None, None],['2013-11-18', 14, None, None], ['2013-11-19', 6, None, None], ['2013-11-20', 1, None, None]],
[['2013-11-14', 28, None, None], ['2013-11-15', 35, None, None], ['2013-11-16', 20, None, None], ['2013-11-17', 7, None, None], ['2013-11-18', 15, None, None], ['2013-11-19', 14, None, None], ['2013-11-20', 0, None, None]]
]
asign_dict = {}
for data in asign:
    for more_data in data:
        if more_data[0] in asign_dict:
            asign_dict[more_data[0]].extend(more_data[1:])
        else:
            asign_dict[more_data[0]] = more_data[1:]

print asign_dict

对应输出

{
 '2013-11-14': [52, None, None, 129, None, None, 56, None, None, 111, None, None, 22, None, None, 33, None, None, 28, None, None],
 '2013-11-15': [74, None, None, 113, None, None, 75, None, None, 227, None, None, 20, None, None, 28, None, None, 35, None, None],
 '2013-11-16': [189, None, None, 58, None, None, 29, None, None, 166, None, None, 13, None, None, 35, None, None, 20, None, None],
 '2013-11-17': [27, None, None, 34, None, None, 156, None, None, 145, None, None, 12, None, None, 14, None, None, 7, None, None],
 '2013-11-18': [11, None, None, 14, None, None, 46, None, None, 23, None, None, 10, None, None, 14, None, None, 15, None, None],
 '2013-11-19': [14, None, None, 13, None, None, 85, None, None, 36, None, None, 2, None, None, 6, None, None, 14, None, None],
 '2013-11-20': [0, None, None, 0, None, None, 6, None, None, 1, None, None, 6, None, None, 1, None, None, 0, None, None]
}

答案 3 :(得分:0)

这似乎是Numpy的工作,但我不够了解。使用标准库,我的解决方案与Ashish Nitin Patil的答案差别不大:

def add(obj):
    head = obj[0]
    if head in heads:
        result[heads.index(head)].extend(obj[1:])
    else:
        heads.append(head)
        result.append(obj)

result, heads = [], []
unique = [obj for level1 in asign for obj in level1]
map(add, unique)
print result

答案 4 :(得分:0)

    asign = asign=[
[['2013-11-14', 52, None, None], ['2013-11-15', 74, None, None], ['2013-11-16', 189, None, None],['2013-11-17', 27, None, None], ['2013-11-18', 11, None, None], ['2013-11-19', 14, None, None],['2013-11-20', 0, None, None]],
[['2013-11-14', 129, None, None], ['2013-11-15', 113, None, None],['2013-11-16', 58, None, None], ['2013-11-17', 34, None, None], ['2013-11-18', 14, None, None],['2013-11-19', 13, None, None], ['2013-11-20', 0, None, None]],
[['2013-11-14', 56, None, None],['2013-11-15', 75, None, None], ['2013-11-16', 29, None, None], ['2013-11-17', 156, None, None],['2013-11-18', 46, None, None], ['2013-11-19', 85, None, None], ['2013-11-20', 6, None, None]],
[['2013-11-14', 111, None, None], ['2013-11-15', 227, None, None], ['2013-11-16', 166, None, None],['2013-11-17', 145, None, None], ['2013-11-18', 23, None, None], ['2013-11-19', 36, None, None],['2013-11-20', 1, None, None]], 
[['2013-11-14', 22, None, None], ['2013-11-15', 20, None, None],['2013-11-16', 13, None, None]['2013-11-17', 12, None, None], ['2013-11-18', 10, None, None],['2013-11-19', 2, None, None], ['2013-11-20', 6, None, None]], 
[['2013-11-14', 33, None, None],['2013-11-15', 28, None, None], ['2013-11-16', 35, None, None], ['2013-11-17', 14, None, None],['2013-11-18', 14, None, None], ['2013-11-19', 6, None, None], ['2013-11-20', 1, None, None]],
[['2013-11-14', 28, None, None], ['2013-11-15', 35, None, None], ['2013-11-16', 20, None, None],
['2013-11-17', 7, None, None], ['2013-11-18', 15, None, None], ['2013-11-19', 14, None, None],
['2013-11-20', 0, None, None]]  
]
    mydata = []
        for i in range(0,6):
            data = []
            for each in asign:
                if each[i][0] not in data:
                    data.append(each[i][0])
                del each[i][0]
                data.extend(each[i])
            mydata.append(data)
        print mydata