扁平化列表列表

新手上路,请多包涵

我在 Python 中遇到方括号问题。我编写了一个产生以下输出的代码:

 [[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]]

但我想用它进行一些计算,但方括号不允许我这样做。

我怎样才能去掉括号?我看到了一些例子来做到这一点,但我无法将它们应用于这种情况。

原文由 Hellfish 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 505
1 个回答

使用嵌套列表理解将列表展平为 “删除括号” 。这将取消嵌套存储在列表列表中的每个列表!

 list_of_lists = [[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]]
flattened = [val for sublist in list_of_lists for val in sublist]

嵌套列表理解以与它们展开相同的方式进行评估(即为每个新循环添加换行符和制表符。因此在这种情况下:

 flattened = [val for sublist in list_of_lists for val in sublist]

相当于:

 flattened = []
for sublist in list_of_lists:
    for val in sublist:
        flattened.append(val)

最大的区别是列表 comp 的计算速度比解开的循环快得多,并且消除了追加调用!

如果您在子列表中有多个项目,列表 comp 甚至会展平它。 IE

 >>> list_of_lists = [[180.0, 1, 2, 3], [173.8], [164.2], [156.5], [147.2], [138.2]]
>>> flattened  = [val for sublist in list_of_lists for val in sublist]
>>> flattened
[180.0, 1, 2, 3, 173.8, 164.2, 156.5, 147.2,138.2]

原文由 Paul Seeb 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题