将一对列表/元组解包成两个列表/元组 [英] Unpacking a list / tuple of pairs into two lists / tuples

查看:35
本文介绍了将一对列表/元组解包成两个列表/元组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

<块引用>

可能的重复:
Python 中的转置/解压缩函数

我有一个看起来像这样的列表:

list = (('1','a'),('2','b'),('3','c'),('4','d'))

我想将列表分成 2 个列表.

list1 = ('1','2','3','4')list2 = ('a','b','c','d')

我可以这样做,例如:

list1 = []列表 2 = []对于我在列表中:list1.append(i[0])list2.append(i[1])

但我想知道是否有更优雅的解决方案.

解决方案

>>>source_list = ('1','a'),('2','b'),('3','c'),('4','d')>>>list1, list2 = zip(*source_list)>>>列表1('1', '2', '3', '4')>>>列表2('A B C D')

注意 zip(*iterable) 是它自己的逆:

<预><代码>>>>列表(source_list) == zip(*zip(*source_list))真的

当解包成两个列表时,这变成:

<预><代码>>>>list1, list2 = zip(*source_list)>>>列表(源列表)== zip(列表1,列表2)真的

rocksportrocker 建议添加.

Possible Duplicate:
A Transpose/Unzip Function in Python

I have a list that looks like this:

list = (('1','a'),('2','b'),('3','c'),('4','d'))

I want to separate the list in 2 lists.

list1 = ('1','2','3','4')
list2 = ('a','b','c','d')

I can do it for example with:

list1 = []
list2 = []
for i in list:
   list1.append(i[0])
   list2.append(i[1])

But I want to know if there is a more elegant solution.

解决方案

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

Edit: Note that zip(*iterable) is its own inverse:

>>> list(source_list) == zip(*zip(*source_list))
True

When unpacking into two lists, this becomes:

>>> list1, list2 = zip(*source_list)
>>> list(source_list) == zip(list1, list2)
True

Addition suggested by rocksportrocker.

这篇关于将一对列表/元组解包成两个列表/元组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆