提问人:Actuarysmacktuary 提问时间:10/4/2021 更新时间:10/6/2021 访问量:271
纯 Python 中的 2d 数组列切片,无需 for 循环
2d Array column slicing in Pure Python without for loops
问:
是否可以在没有 for 循环或列表推导的情况下在纯 Python 中从 2d 数组中切出一列?例如,假设你有一个 4x4 的整数数组:
grid = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
假设您想返回没有第一行和最后一列的网格:是否有切片语法可以让您执行此操作?排除第一行很容易实现,但是做一些类似的事情似乎应该有效,但会导致 .如果可能的话,我想避免在循环/列表理解中遍历它。我知道这会起作用,但我想知道是否有更优雅的语法。[[5,6,7],[9,10,11],[13,14,15]]
grid = grid[1:4]
grid = grid[1:4][0:2]
[[5, 6, 7, 8], [9, 10, 11, 12]]
答:
0赞
Actuarysmacktuary
10/6/2021
#1
就 ddejohn 的观点而言,这不能仅通过切片符号来完成。这不使用切片表示法,但如果 matrix 是输入列表,则不使用 list comps 或 for 循环的一个很好的答案是 list(zip(*matrix))。
评论
[row[:-1] for row in x[1:]]