【发布时间】:2019-10-26 00:21:12
【问题描述】:
我只想浏览 2D 列表的一部分,而不是全部。
这基本上就是我想做的事情:
假设用户输入坐标[1,1](所以,第 1 行第 1 列)
如果我有 2D 列表:
[[1,3,7],
[4,2,9],
[13,5,6]]
然后我想遍历与[1,1]处的元素相邻的所有元素
此外,如果元素位于二维列表的角落或边缘,(例如,基本上如果用户输入[0,0],),那么我只想取回[0,0] 处的元素,@ 987654327@、[1,0]、[1,1]
所以基本上我只想要与二维数组中某个特定点相邻的元素。
这是我到目前为止所做的:
我已经做到了,它在代码的开头分配了 4 个变量:starting_row、ending_row、starting_column 和 ending_column。这些变量根据用户想要输入的坐标分配值(如果它们的行是 0 或 len(list) 则 for 循环相应地运行。列也是如此)。
然后,我使用嵌套的 for 循环遍历每个元素
for row in range(row_start, row_end+1):
for column in range(column_start, column_end+1):
print(lst[row,column])
唯一的问题是,当输入超过 3x3 元素的列表大小时,它似乎无法正常工作并且经常输出整个 2D 列表(所有列表都是方形列表)
【问题讨论】:
-
对于标准列表,您必须使用
lst[row][column]而不是lst[row,column] -
使用
range()和更高版本的lst[row][column]你会得到错误index out of the range。更好的切片列表 -rows = lst[(row-1):(row+2)]。即使你使用了错误的索引,你也不会出错——而且你不必检查你是否在[0][0]。 -
您也可以使用 NumPy 数组并进行垂直切片 stackoverflow.com/questions/17277100/…
标签: python