为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

扬帆大鱼 2023-03-01 16:55:56
我有一个元组列表,它来自我的 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只会包含最后一个元组,而其他元组无论如何都不会存储。我需要在循环或类似的东西中放置一个循环。怎么做?
查看完整描述

4 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

在你的问题中,你说,

上面代码的问题是 list1 将只包含最后一个元组,而其他元组无论如何都不会存储

不过,这并不完全正确。列表完成后为真,但是,当循环仍在运行时,list1 将按顺序设置为列表的每个项目。因此,如果您在循环中将 list1 添加到您的电子邮件,则列表中的每一项都将被添加。

我会做这样的事情:

for item in your_list:
   email += list(item)
   email += '\n'

或者,更简单地说:

email += '\n'.join(map(list, your_list))


查看完整回答
反对 回复 2023-03-01
?
三国纷争

TA贡献1804条经验 获得超7个赞

将每个内部元组附加到新列表。所以你的最终列表成为列表列表:


[['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+=1


my_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']


查看完整回答
反对 回复 2023-03-01
?
largeQ

TA贡献2039条经验 获得超7个赞

为了完整起见,这里是原始问题的答案:


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}])")

然而,正如讨论所表明的那样,这不是一个好主意,当然有一种更简单的方法可以实现您想要做的事情。上面的代码会在内存中创建一堆代码中没有显式定义的变量,所以在以后调试和维护代码的时候肯定会很头疼。


查看完整回答
反对 回复 2023-03-01
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

虽然这段代码无法将元组动态分配到变量中,但它可以从给定的列表中提取元组并通过“列表理解”将它们转换为列表。请让我知道是否可以进行动态分配。


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]])


查看完整回答
反对 回复 2023-03-01
  • 4 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信