将列表/元组对解压缩为两个列表/元组

发布于 2024-12-06 11:18:33 字数 345 浏览 0 评论 0原文

我有一个如下所示的列表:

my_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])

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

I have a list that looks like this:

my_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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

℡Ms空城旧梦 2024-12-13 11:18:33
>>> 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

rocksportrocker建议的添加。

>>> 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.

苏辞 2024-12-13 11:18:33
list1 = (x[0] for x in source_list)
list2 = (x[1] for x in source_list)
list1 = (x[0] for x in source_list)
list2 = (x[1] for x in source_list)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文