gpt4 book ai didi

python - 如何遍历二维列表的一部分

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:54 25 4
gpt4 key购买 nike

我只想浏览二维列表的一部分,而不是整个列表。这基本上是我想做的:假设用户输入坐标 [1,1](因此,第 1 行第 1 列)如果我有二维列表:

[[1,3,7],
[4,2,9],
[13,5,6]]

然后我想遍历与 [1,1] 处的元素相邻的所有元素

此外,如果元素位于二维列表的角落或边缘,(所以基本上如果用户输入 [0,0], 例如)那么我只想取回 [0,0][0,1][1,0][1] 处的元素,1]

所以本质上我只想要与二维数组中特定点相邻的元素。

这是我到目前为止所做的:我这样做是为了在代码的开头分配 4 个变量:starting_rowending_rowstarting_columnending_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 列表(所有列表都是方形列表)

最佳答案

您可以根据给定的行和列对列表列表进行切片。对于下限,使用 max0 以避免使用负索引进行切片,但对于上限则不然,因为切片的停止索引可以为超出列表范围:

def get_adjacent_items(matrix, row, col):
output = []
for r in matrix[max(row - 1, 0): row + 2]:
for i in r[max(col - 1, 0): col + 2]:
output.append(i)
return output

或者,通过列表理解:

def get_adjacent_items(matrix, row, col):
return [i for r in matrix[max(row - 1, 0): row + 2] for i in r[max(col - 1, 0): col + 2]]

因此给定:

m = [[1, 3, 7],
[4, 2, 9],
[13, 5, 6]]

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]

关于python - 如何遍历二维列表的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58567084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com