【发布时间】:2020-01-29 07:55:03
【问题描述】:
我有一个类似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 不重复,因为我已经阅读了解决方案。我想将我的子列表存储在单独的列表中。这是不同的。
【问题讨论】:
-
预期输出是什么?
-
你的意思是
a,b,c,d,e = mylst(顺便说一句,这是处理多个列表的非常低效的方式) -
既然已经有了
mylst[0]、mylst[1]、...,为什么还需要lst1、lst2、...?那是糟糕的设计。如果 mylst 包含 1000 个子列表会怎样?拥有 lst1 ... lst1000 将绝对没有意义。 -
正如其他人所说,我认为 OP 应该重新评估所要求的内容是否有意义。本质上,您需要 5 个由字母标识的变量。但这就是列表的全部意义——由数字标识的 5 个变量的集合。这样方便多了。如果您真的需要字母,请使用 dict,但创建单独的变量会使使用变得更难,而不是更容易。
标签: python list for-loop tuples iteration