我有一个看起来像这样的列表:
list = (('1','a'),('2','b'),('3','c'),('4','d'))
我想将列表分成 2 个列表。
list1 = ('1','2','3','4') list2 = ('a','b','c','d')
例如,我可以这样做:
list1 = [] list2 = [] for i in list: list1.append(i[0]) list2.append(i[1])
但我想知道是否有更优雅的解决方案。
source_list = [(‘1’,’a’),(‘2’,’b’),(‘3’,’c’),(‘4’,’d’)] >>> list1, list2 = zip(*source_list) >>> list1 (‘1’, ‘2’, ‘3’, ‘4’) >>> list2 (‘a’, ‘b’, ‘c’, ‘d’)
编辑: 注意这zip(*iterable)是它自己的逆:
zip(*iterable)
>>> list(source_list) == zip(*zip(*source_list)) True
当解压成两个列表时,这变成:
>>> list1, list2 = zip(*source_list) >>> list(source_list) == zip(list1, list2) True
Rocksportrocker 建议添加。