Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中将列表拆分为列表_Python_List_Loops - Fatal编程技术网

在Python中将列表拆分为列表

在Python中将列表拆分为列表,python,list,loops,Python,List,Loops,我有一个清单,里面有更多的内容。该列表可以包含无限的列表。 我想把这些清单分成不同的清单。 下面是一个例子: data = [[1538406000000, 6569.9680123, 6559.8, 6570, 6551.8, 301.21301548], [1538402400000, 6570, 6569.9, 6572.6, 6500, 1796.34637855], [1538398800000, 6604.7, 6570, 6612.4, 6561, 622.39871899], [

我有一个清单,里面有更多的内容。该列表可以包含无限的列表。 我想把这些清单分成不同的清单。 下面是一个例子:

data = [[1538406000000, 6569.9680123, 6559.8, 6570, 6551.8, 301.21301548], [1538402400000, 6570, 6569.9, 6572.6, 6500, 1796.34637855], [1538398800000, 6604.7, 6570, 6612.4, 6561, 622.39871899], [1538395200000, 6594.9, 6604.8, 6613.5, 6570, 345.6560351], [1538391600000, 6579.69030138, 6593.9530902, 6603.1, 6555, 1243.109362], [1538388000000, 6617.5, 6579.7, 6622, 6578.6, 344.49315963], [1538384400000, 6628, 6617.5, 6630.2, 6617.4, 231.50416134], [1538380800000, 6602, 6628, 6629.5, 6596.5, 537.99703832], [1538377200000, 6630.4, 6603.9, 6632.12172725, 6600, 135.26208553], [1538373600000, 6627, 6631, 6639.8, 6600, 376.68741732]]

var1 = [data[0][0], data[1][0], data[2][0], ....]
var2 = [data[0][1], data[1][1], data[2][1], ....]
我如何实现自动化


非常感谢

这正是列表理解的目的,尽管我认为将数据保持为2D列表
数据
并仅在您想要使用该数据时才提取列表理解更为惯用(每当你发现自己在写这样的代码:
foo1=…;foo2=…;foo3=…;
,你可能真的想要
foo=[…,…,…]
,这就是
数据的本来面目)

var1 = [sublist[0] for sublist in data]
var2 = [sublist[1] for sublist in data]
虽然如果您只是想将行交换为列(
[所有零索引、所有一索引、所有二索引,…]
),但Python中有一个简洁的习惯用法称为zip star

swapped = zip(*data)

请注意,
zip
返回一个迭代器,而不是一个列表,因此您可能必须转换为
list
,以执行诸如索引之类的繁杂工作。
swapped
的第一个结果是
数据的每个子列表的第0个索引,等等。

由于您的列表可以是无限制的,我建议使用pandas:

import pandas as pd
data = [[1538406000000, 6569.9680123, 6559.8, 6570, 6551.8, 301.21301548], [1538402400000, 6570, 6569.9, 6572.6, 6500, 1796.34637855], [1538398800000, 6604.7, 6570, 6612.4, 6561, 622.39871899], [1538395200000, 6594.9, 6604.8, 6613.5, 6570, 345.6560351], [1538391600000, 6579.69030138, 6593.9530902, 6603.1, 6555, 1243.109362], [1538388000000, 6617.5, 6579.7, 6622, 6578.6, 344.49315963], [1538384400000, 6628, 6617.5, 6630.2, 6617.4, 231.50416134], [1538380800000, 6602, 6628, 6629.5, 6596.5, 537.99703832], [1538377200000, 6630.4, 6603.9, 6632.12172725, 6600, 135.26208553], [1538373600000, 6627, 6631, 6639.8, 6600, 376.68741732]]

df = pd.DataFrame(data)
df.head()
打印输出:

现在,您可以非常灵活地处理数据。例如:

df.loc[0, :].values 
获取作为值列表的第一行。

使用numpy

for x in range(0,len(item[0]):
  print [sublist[x] for sublist in data]
initia_data=[[1538406000000, 6569.9680123, 6559.8, 6570, 6551.8, 301.21301548], [1538402400000, 6570, 6569.9, 6572.6, 6500, 1796.34637855], [1538398800000, 6604.7, 6570, 6612.4, 6561, 622.39871899], [1538395200000, 6594.9, 6604.8, 6613.5, 6570, 345.6560351], [1538391600000, 6579.69030138, 6593.9530902, 6603.1, 6555, 1243.109362], [1538388000000, 6617.5, 6579.7, 6622, 6578.6, 344.49315963], [1538384400000, 6628, 6617.5, 6630.2, 6617.4, 231.50416134], [1538380800000, 6602, 6628, 6629.5, 6596.5, 537.99703832], [1538377200000, 6630.4, 6603.9, 6632.12172725, 6600, 135.26208553], [1538373600000, 6627, 6631, 6639.8, 6600, 376.68741732]]
data = np.array(initia_data)
for i in range(len(initia_data[0])):
    print(data[:,i])

您可以使用内置函数
zip
,如下所示:

list1, list2 = map(list, zip(*data))
list1
list2
将包含给定列表中所需的列表
data

不要创建变量数量 改用
dict
list
为数据的每个“列”创建一个新变量很有诱惑力,但不要这样做。这会混淆代码,增加维护代码的复杂性,并确保您无法再有效地处理相关变量

这里有一个使用dict的解决方案:

res_dict = dict(enumerate(map(list, zip(*data)), 1))
下面是另一个简单的列表转换:

res_list = list(map(list, zip(*data)))

您的预期输出是什么样子的?另外,嵌套的预期级别是什么?它会抛出太多的值来解包,因为您将得到六个不同的列表,同时尝试将它们存储在两个变量中。谢谢!
res_list = list(map(list, zip(*data)))