python - 没有numpy的多维列表切片
问题描述
尝试对维度 = (3 X 3) 的 2D 列表进行切片,这会导致 (2 X 2) 的 4 个子列表 [没有 numpy 和其他可能的库]
lis = [[1,1,1],[2,2,2],[3,3,3]]
print(lis)
dex = list([])
for i in range(0,2):
for j in range(0,2):
dex.append( [ lis[i:i+2,j:j+2] ] )
# print( lis[i:i+2,j:j+2] )
预期的 :
[ [[1,1][2,2]], [[1,1][2,2]], [[2,2][3,3]], [[2,2][3,3]] ]
获取:TypeError:列表索引必须是整数或切片,而不是元组
解决方案
只需使用列表推导即可获得相同的效果。对于 3D 列表,您将在其中有另一种理解。
代替[lis[i:i+2,j:j+2]]
利用[x[j:j+2] for x in lis[i:i+2]]
的输出是[[[1, 1], [2, 2]], [[1, 1], [2, 2]], [[2, 2], [3, 3]], [[2, 2], [3, 3]]]
推荐阅读
- python - scrapy 和 selenium 错误以抓取具有加载更多按钮的页面
- android - BitmapFactory.decodeFile 返回 null 并将 inJustDecodeBounds 设置为 false
- java - Cloud Foundry 将路由从一个应用程序复制到另一个应用程序
- c# - C# 将矩阵划分为子块
- c++ - 连接资源文件中的字符串并将其传递给菜单项字符串(winapi)c ++
- java - Windows 中的 Netty 零拷贝
- ssh - 如何在多台计算机上使用并行来只完成一次任务列表?
- javascript - 如何使用js过滤方法查找包含特定字符串的项目数
- php - Sugarcrm 日期未正确显示
- java - 使用 Auth0 的 Springboot 身份验证不会进行身份验证