4 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
在你的問(wèn)題中,你說(shuō),
上面代碼的問(wèn)題是 list1 將只包含最后一個(gè)元組,而其他元組無(wú)論如何都不會(huì)存儲(chǔ)
不過(guò),這并不完全正確。列表完成后為真,但是,當(dāng)循環(huán)仍在運(yùn)行時(shí),list1 將按順序設(shè)置為列表的每個(gè)項(xiàng)目。因此,如果您在循環(huán)中將 list1 添加到您的電子郵件,則列表中的每一項(xiàng)都將被添加。
我會(huì)做這樣的事情:
for item in your_list: email += list(item) email += '\n'
或者,更簡(jiǎn)單地說(shuō):
email += '\n'.join(map(list, your_list))

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
將每個(gè)內(nèi)部元組附加到新列表。所以你的最終列表成為列表列表:
[['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貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊
為了完整起見,這里是原始問(wèn)題的答案:
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}])")
然而,正如討論所表明的那樣,這不是一個(gè)好主意,當(dāng)然有一種更簡(jiǎn)單的方法可以實(shí)現(xiàn)您想要做的事情。上面的代碼會(huì)在內(nèi)存中創(chuàng)建一堆代碼中沒(méi)有顯式定義的變量,所以在以后調(diào)試和維護(hù)代碼的時(shí)候肯定會(huì)很頭疼。

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
雖然這段代碼無(wú)法將元組動(dòng)態(tài)分配到變量中,但它可以從給定的列表中提取元組并通過(guò)“列表理解”將它們轉(zhuǎn)換為列表。請(qǐng)讓我知道是否可以進(jìn)行動(dòng)態(tà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]])
添加回答
舉報(bào)