4 回答
TA贡献1806条经验 获得超8个赞
在你的问题中,你说,
上面代码的问题是 list1 将只包含最后一个元组,而其他元组无论如何都不会存储
不过,这并不完全正确。列表完成后为真,但是,当循环仍在运行时,list1 将按顺序设置为列表的每个项目。因此,如果您在循环中将 list1 添加到您的电子邮件,则列表中的每一项都将被添加。
我会做这样的事情:
for item in your_list: email += list(item) email += '\n'
或者,更简单地说:
email += '\n'.join(map(list, your_list))
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']
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}])")
然而,正如讨论所表明的那样,这不是一个好主意,当然有一种更简单的方法可以实现您想要做的事情。上面的代码会在内存中创建一堆代码中没有显式定义的变量,所以在以后调试和维护代码的时候肯定会很头疼。
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]])
添加回答
举报