【问题标题】:How customized flattening the nested list from a list? [closed]如何自定义扁平化列表中的嵌套列表? [关闭]
【发布时间】:2020-07-12 16:26:24
【问题描述】:

我有以下清单:

all_lines [[(0, 0), (0, 7)], 
           [(20, 20), (0, 7)], 
           [(0, 0), (13, 20)], 
           [(20, 20), (13, 20)], 
           [(10, 0), (0, 17), (10, 10), (10, 17), (20, 0), (20, 17), (0, 20), (20, 7)]]

所以我想把它转换成如下格式:

all_lines [[(0, 0), (0, 7)], 
           [(20, 20), (0, 7)], 
           [(0, 0), (13, 20)], 
           [(20, 20), (13, 20)], 
           [(10, 0), (0, 17)], 
           [(10, 10), (10, 17)], 
           [(20, 0), (20, 17)], 
           [(0, 20), (20, 7)]]

我试过了:

flat_list = [item for sublist in all_lines for item in sublist]

但没有给我想要的格式。

如何将列表转换成我想要的格式?

【问题讨论】:

  • 您的问题是您的示例显示的是 not 展平 - 因此使用展平理解不会得到您想要的。您要做的是“分块”,并且有选择地这样做。您将每个元素分块为长度为 2 的列表 - 只有最后一个列表尚未采用该格式。有了这个提示,我希望你能找到并实现更接近你描述的东西。至少,您可以完全展平列表,然后将剩余的“简单”元组列表分块。
  • 一种方法是在你拥有 flat_list 之后,从它创建对,如下所示:desired_list = [flat_list[i:i+2] for i in range(0, len(flat_list), 2)]

标签: python list flatten


【解决方案1】:

使用嵌套列表推导可以达到您的目的:

flat=[[all_lines[i][j],all_lines[i][j+1]] for i in range(0,len(all_lines)) for j in range(0,len(all_lines[i]),2) ]

这里的假设是任何元素的长度都可以被 2 整除。

【讨论】:

    猜你喜欢
    • 2017-12-01
    • 1970-01-01
    • 2016-01-14
    • 2010-12-13
    • 2017-11-19
    • 1970-01-01
    • 2012-09-17
    • 2019-02-04
    • 2012-07-01
    相关资源
    最近更新 更多