如何从列表中自定义展平嵌套列表?

How customized flattening the nested list from a list?

我有以下列表:

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]

但没有给我想要的格式。

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

使用嵌套列表理解适用于您的目的:

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整除