如何从长度可变的元组列表中提取元组

我有一个元组列表,它来自我的 Python 脚本的另一部分,并且可以具有可变长度。我想分别提取元组并将它们存储到多个新列表中。


这是我可以获得的示例:


mylist = [

('aaa', 'bbb', 'ccc'),

('ddd', 'eee', 'fff'),

('ggg', 'hhh', 'iii'),

('jjj', 'kkk', 'lll'), 

... etc.

]

我想要的结果是这样的:


mylist1 = ['aaa', 'bbb', 'ccc']

mylist2 = ['ddd', 'eee', 'fff']

mylist3 = ['ggg', 'hhh', 'iii']

mylist4 = ['jjj', 'kkk', 'lll']

etc.

由于我开始使用 Python,我知道循环for可以提取列表中的项目,如下所示:


for item in mylist:

   mylist1 = item

但是上面代码的问题是它list1只会包含最后一个元组,而其他元组无论如何都不会存储。我需要在循环或类似的东西中放置一个循环。


怎么做?


扬帆大鱼
浏览 100回答 4
4回答

慕森卡

在你的问题中,你说,上面代码的问题是 list1 将只包含最后一个元组,而其他元组无论如何都不会存储不过,这并不完全正确。列表完成后为真,但是,当循环仍在运行时,list1 将按顺序设置为列表的每个项目。因此,如果您在循环中将 list1 添加到您的电子邮件,则列表中的每一项都将被添加。我会做这样的事情:for item in your_list:    email += list(item)    email += '\n'或者,更简单地说:email += '\n'.join(map(list, your_list))

三国纷争

将每个内部元组附加到新列表。所以你的最终列表成为列表列表:[['aaa', 'bbb', 'ccc'], [['ddd', 'eee', 'fff'],....]fin_list = []original_list = [('aaa', 'bbb', 'ccc'),('ddd', 'eee', 'fff'),('ggg', 'hhh', 'iii'),('jjj', 'kkk', 'lll'), .......]for each_tuple in original_list:    fin_list .append(list(each_tuple))输出:[['aaa', 'bbb', 'ccc'], ['ddd', 'eee', 'fff'], ['ggg', 'hhh', 'iii'], ['jjj', 'kkk', 'lll']]方法二class XY_Lists(object):  def __init__(self,list_of_tups):    count=0    for each_tup in list_of_tups:      setattr(self,"List_{}".format(count),list(each_tup))      count+=1my_named_list=XY_Lists(original_list)print(my_named_list.List_0)# you can keep accessing the class object attributes one by one输出:['aaa', 'bbb', 'ccc']

largeQ

为了完整起见,这里是原始问题的答案:mylist = [('aaa', 'bbb', 'ccc'),('ddd', 'eee', 'fff'),('ggg', 'hhh', 'iii'),('jjj', 'kkk', 'lll'), ]for i in range(len(mylist)):    exec(f"list{i+1} = list(mylist[{i}])")然而,正如讨论所表明的那样,这不是一个好主意,当然有一种更简单的方法可以实现您想要做的事情。上面的代码会在内存中创建一堆代码中没有显式定义的变量,所以在以后调试和维护代码的时候肯定会很头疼。

翻翻过去那场雪

虽然这段代码无法将元组动态分配到变量中,但它可以从给定的列表中提取元组并通过“列表理解”将它们转换为列表。请让我知道是否可以进行动态分配。Mylist = [('aaa', 'bbb', 'ccc'), ('ddd', 'eee', 'fff'), ('ggg', 'hhh', 'iii'), ('jjj', 'kkk', 'lll')]for i in range(len(Mylist)):   print("Mylist",i+1,"=",[x for x in Mylist[i]])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python