解包成对的列表/元组成两个列表/元组
可能重复:
Python中的转置/解压缩函数
我有一个如下所示的列表:
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]) 
但是我想知道是否有更优雅的解决scheme。
 >>> 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)是它自己的逆向: 
 >>> list(source_list) == zip(*zip(*source_list)) True 
当拆分成两个列表时,这变成:
 >>> list1, list2 = zip(*source_list) >>> list(source_list) == zip(list1, list2) True 
另外由rocksportrockerbuild议。
 list1= ( x[0] for x in source_list ) list2= ( x[1] for x in source_list )