【发布时间】: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)]