保存每个for循环迭代的输出以拆分嵌套列表

时间:2019-09-30 02:22:15

标签: python list for-loop tuples iteration

我有一个看起来像这样的列表mylst

[[('Salmon', 9), ('Fish&Chips', 3), ('Pasta', 8), ('Shrimp', 10)],
 [('Shrimp', 8), ('Fish&Chips', 10), ('Salmon', 9), ('Pasta', 7)],
 [('Shrimp', 10), ('Fish&Chips', 6), ('Salmon', 8), ('Pasta', 5)],
 [('Shrimp', 7), ('Pasta', 9), ('Salmon', 8), ('Fish&Chips', 8)],
 [('Fish&Chips', 10), ('Shrimp', 8), ('Salmon', 9), ('Pasta', 3)]]

如果我打印所需的索引,我可以访问子列表

mylst[0]

返回

[('Salmon', 9), ('Fish&Chips', 3), ('Pasta', 8), ('Shrimp', 10)]

但是我想将每个子列表存储在一个新列表中。

因为最终我想为每个子列表提取项目(元组索引0)和订购量(元组索引1)并将它们存储在两个单独的列表中。但是如果我不能分割列表,我将无法做到这一点

我试图遍历主列表

newlst=[]

for sublst in mylst:
    newlst.append(sublst)

newlst=[]

for i in range(len(mylst)):
    for sublst in mylst:
        newlst.append(mylst[i])

我不确定如何拆分然后存储for循环的每次迭代的多个输出。

所需的输出是将5个子列表作为单独的列表。例如

lst1=[('Salmon', 9), ('Fish&Chips', 3), ('Pasta', 8), ('Shrimp', 10)]

lst2 = [('Shrimp', 8), ('Fish&Chips', 10), ('Salmon', 9), ('Pasta', 7)]

以此类推。

请注意:由于我已阅读解决方案,因此我的问题不是该one的重复。我想将子列表存储在单独的列表中。这是不同的。

2 个答案:

答案 0 :(得分:0)

如果您只想解压缩列表,则可以按照Chris所说的做,然后a,b,c,d,e = mylst做,但是如果要以一种更有用的方式重新打包数据,则建议将其存储在熊猫数据框。您可以使用以下代码

import numpy as np
import pandas as pd

my_df = pd.DataFrame(np.array(mylst).reshape(-1, 2),
    columns=['item', 'quantity']) 

答案 1 :(得分:0)

您可以使用 for 循环创建一个庞大的嵌套列表,每个循环都包含所需的列表。

for each in lst:
seplist = [] #splitted list of each digit of every integer
for eachagain in str(each):
    seplist.append(integer)
nestedlist.append(seplist)

这里的嵌套列表可以通过使用另一个for循环来分离和存储