gpt4 book ai didi

python - 希望遍历跳过特定索引的列表列表

转载 作者:行者123 更新时间:2023-12-01 23:07:20 25 4
gpt4 key购买 nike

我目前正在从事一个 Python 3 项目,该项目涉及多次遍历列表列表,我想编写一个代码来跳过此列表列表的特定索引。具体索引存储在单独的列表列表中。我写了一小部分列表,grid 和我不想迭代的值,coordinates:

grid = [[0, 0, 1], [0, 1, 0], [1, 0, 0]]
coordinates = [[0, 2], [1, 1], [2, 0]]

基本上,我希望跳过 grid 中的每个 1(1 只是用来使相应的坐标位置更加可见)。

我试过下面的代码没有用:

for row in grid:
for value in row:
for coordinate in coordinates:
if coordinate[0] != grid.index(row) and coordinate[1] != row.index(value):
row[value] += 4

print(grid)

预期的输出是:[[4, 4, 1], [4, 1, 4], [1, 4, 4]]

执行代码后,我收到了 ValueError: 1 is not in list

我有两个问题:

  1. coordinates 中的每个 coordinate 包含第 0 和第 1 个位置时,为什么我会收到此错误消息?

  2. 有没有比使用 for 循环更好的方法来解决这个问题?

最佳答案

您的代码有两个问题。

  1. 包含整数列表, 包含这些行中的值。问题是您需要访问这些值的索引,而不是值本身。您设置循环的方式不允许这样做。

  2. .index() 返回传入参数的第一个实例的索引;它不是使用带括号的索引的直接替代品。

这是一个执行您所描述的代码片段,解决了上述两个问题:

grid = [[0, 0, 1], [0, 1, 0], [1, 0, 0]]
coordinates = [[0, 2], [1, 1], [2, 0]]
for row in range(len(grid)):
for col in range(len(grid[row])):
if [row, col] not in coordinates:
grid[row][col] += 4

print(grid) # -> [[4, 4, 1], [4, 1, 4], [1, 4, 4]]

顺便说一句,如果你有很多坐标,你可以把它变成一个set元组而不是二维列表,因此您不必为每个行/列索引对遍历整个列表。该集合看起来像 coordinates = {(0, 2), (1, 1), (2, 0)},您将使用 if (row, col) not in coordinates: 而不是 if [row, col] not in coordinates: 如果您使用的是集合。

关于python - 希望遍历跳过特定索引的列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70627581/

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