我只想浏览2D列表的一部分,而不是整个列表。
基本上我想做的是:
假设用户输入坐标[1,1]
(因此,第1行第1列)
如果我有2D列表:
[[1,3,7],
[4,2,9],
[13,5,6]]
然后我想遍历与[1,1]
处的元素相邻的所有元素
此外,如果元素位于2D列表的一角或边缘(例如,基本上如果用户输入[0,0],
),那么我只想返回[0,0]
、[0,1]
、[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列表(所有列表都是正方形列表)
可以根据给定的行和列对列表列表进行切片。对于下界,使用
max
和0
避免使用负索引进行切片,但对于上界则不是这样,因为切片的停止索引可以超出列表的范围:或者,用一个列表:
因此:
get_adjacent_items(m, 0, 0)
返回:[1, 3, 4, 2]
get_adjacent_items(m, 1, 1)
返回:[1, 3, 7, 4, 2, 9, 13, 5, 6]
get_adjacent_items(m, 2, 1)
返回:[4, 2, 9, 13, 5, 6]
get_adjacent_items(m, 2, 2)
返回:[2, 9, 5, 6]
相关问题 更多 >
编程相关推荐