提问人:Feeko 提问时间:8/31/2023 最后编辑:Scott HunterFeeko 更新时间:8/31/2023 访问量:57
由于 TypeError,无法将嵌套列表值替换为 X:列表索引必须是整数或切片,而不是列表错误 [duplicate]
Cannot replace nested list value to X due to TypeError: list indices must be integers or slices, not list error [duplicate]
问:
我正在尝试做一个练习,学习嵌套列表的 Python,我的工作方式是你有一个网格,然后根据你输入的内容,它会用“X”替换该位置。您还需要在输入 2 位数字时执行此操作。我能够将输入转换为列表,并且能够确保它们也是整数。
# 🚨 Don't change the code below 👇
row1 = ["⬜️","️⬜️","️⬜️"]
row2 = ["⬜️","⬜️","️⬜️"]
row3 = ["⬜️️","⬜️️","⬜️️"]
map = [row1, row2, row3]
print(f"{row1}\n{row2}\n{row3}")
position = input("Where do you want to put the treasure? ")
# 🚨 Don't change the code above 👆
#Write your code below this row 👇
#Take the 2-digit number and split into the column and row numbers
#Also now integers to find the indexes
column_num = int(position[0])
row_num = int(position[1])
#Take the 2 numbers, and use to make where to mark the X
new_list = [column_num, row_num]
new_column = new_list[0]
new_row = new_list[1]
x = [new_column] + [new_row]
print(new_list)
print(x)
# Replace the new_list list, which have the indexes, into X
map[new_list] = "X"
#Write your code above this row 👆
# 🚨 Don't change the code below 👇
print(f"{row1}\n{row2}\n{row3}")
我收到此错误:
Traceback (most recent call last):
File "C:\Users\*******\IdeaProjects\_100DaysOfCodev2\.idea\Day 4 - Beginner - Randomisation and Python Lists\6- [Exercise] - Treasure Map.py", line 27, in <module>
map[new_list] = "X"
TypeError: list indices must be integers or slices, not list
我试图将列表更改为“int”,但随后它告诉我不是元组而不是列表。
有人有什么想法吗?我想了解我在这里错过了什么,而不是回去玩解决方案。
我试图将新列表的值分开,以便它们是整数,但我需要它们是一组索引,但它不起作用,因为它再次成为列表。我尝试从“地图”嵌套列表中召唤不同的东西,但我收到索引错误,它也超出了索引范围。此外,我们还没有在“for、in”或定义函数中。回溯(最近一次调用最后一次): 文件“C:\Users\e792977\IdeaProjects_100DaysOfCodev2.idea\Day 4 - Beginner - Randomisation and Python Lists\6- [Exercise] - Treasure Map.py”,第 27 行,在 地图[new_list] = “X” TypeError:列表索引必须是整数或切片,而不是列表
答:
您需要明确标识 2 个索引:
map[new_list[0]][new_list[1]] = "X"
或者在当前解决方案的上下文中,例如:
# 🚨 Don't change the code below 👇
row1 = ["⬜️","️⬜️","️⬜️"]
row2 = ["⬜️","⬜️","️⬜️"]
row3 = ["⬜️️","⬜️️","⬜️️"]
map = [row1, row2, row3]
print(f"{row1}\n{row2}\n{row3}")
position = input("Where do you want to put the treasure? ")
# 🚨 Don't change the code above 👆
#Write your code below this row 👇
x_index = int(position[0]) - 1 ## assume that users will use 1 indexing
y_index = int(position[1]) - 1
map[y_index][x_index] = "X"
#Write your code above this row 👆
# 🚨 Don't change the code below 👇
print(f"{row1}\n{row2}\n{row3}")
注意:
正如其他人所指出的那样,对于变量名称来说是一个糟糕的选择,因为它会隐藏 python 函数 .您可以在此处找到此类的完整列表: 内置函数map
map()
其次,python列表是,如果我们的用户没有预料到可能会有混淆。此代码获取他们请求的行和列,并将其转换为假设他们期望成为“第一”行。0-indexed
0-indexed
row 1
最后,我希望当被要求提供坐标时,我按以下顺序():xy
- x(行偏移量)
- y(列偏移量)
但是,每个“行”的数据都是 并且给定行中的每个数据单元格都是 因此,当我们设置“X”时,我们将通过而不是直觉索引到我们的数据中。i-th y-offset
j-th x-offset
map[y_index][x_index]
map[x_index][y_index]
评论
TypeError: list indices must be integers or slices, not list
new_list
map
map
map
地图
的元素是什么?他们有什么指数?(提示:请注意,如何完全允许编写类似的东西并与之合作?这是否告诉您有关嵌套列表在 Python 中如何工作的信息?x = [1, 1]
map[x]
[1, 2, [3, 4], 5]