【问题标题】:Split a list into two different lists [closed]将列表拆分为两个不同的列表[关闭]
【发布时间】:2021-12-02 23:44:47
【问题描述】:

谁能帮我把一个列表分成两部分

列表示例:

[[[9.0, 16.0], [11.0, 15.0], [12.0, 16.0], [14.0, 13.0]], [[22.0, 13.0], [23.0, 14.0]]]

输出:

A=[9.0, 11.0, 12.0, 14.0, 22.0, 23.0]
B=[16.0, 15.0, 16.0, 13.0, 13.0, 14.0]

【问题讨论】:

  • 你试过了吗?
  • 这能回答你的问题吗? What is the inverse function of zip in python?
  • A, B = list(zip(*values))
  • @PeterWood 首先他需要使用values = chain.from_iterable(values) 然后使用zip
  • @user1740577 啊,我没注意到嵌套列表。

标签: python arrays list arraylist


【解决方案1】:

您可以使用chain,然后拆分为两个list,如下所示:

>>> from itertools import chain
>>> lst = [[[9.0, 16.0], [11.0, 15.0], [12.0, 16.0], [14.0, 13.0]], [[22.0, 13.0], [23.0, 14.0]]]

>>> lst = list(chain.from_iterable(lst))
>>> lst
[[9.0, 16.0],
 [11.0, 15.0],
 [12.0, 16.0],
 [14.0, 13.0],
 [22.0, 13.0],
 [23.0, 14.0]]
    
>>> [l[0] for l in lst]
[9.0, 11.0, 12.0, 14.0, 22.0, 23.0]


>>> [l[1] for l in lst]
[16.0, 15.0, 16.0, 13.0, 13.0, 14.0]

感谢@PeterWood,您可以使用zip,如下所示:

>>> from itertools import chain
>>> lst = [[[9.0, 16.0], [11.0, 15.0], [12.0, 16.0], [14.0, 13.0]], [[22.0, 13.0], [23.0, 14.0]]]
>>> lst = chain.from_iterable(lst)

>>> A, B = list(zip(*lst))
>>> list(A)
[9.0, 11.0, 12.0, 14.0, 22.0, 23.0]

>>> list(B)
[16.0, 15.0, 16.0, 13.0, 13.0, 14.0]

【讨论】:

  • zip 更简单。
猜你喜欢
  • 1970-01-01
  • 2022-12-21
  • 1970-01-01
  • 2022-08-09
  • 1970-01-01
  • 2013-08-09
  • 1970-01-01
  • 2010-09-27
  • 1970-01-01
相关资源
最近更新 更多