我是初学者学习python。 我对这个for循环有问题。
我正在尝试使用PC的搜索循环来跟踪玩家(人类)所做的移动并预测tic tac toe游戏中的下一步行动。
结果,我创建了一个for循环来附加玩家(人类)所做的动作,但发生了一些奇怪的事情
lst = [ [ "X",[], [] ],
[ [], "X", [] ],
[ [], "X", [] ] ]
temp_lst = []
for i in lst:
lst_1 = []
for j in i:
if j == "X":
lst_1.append(lst.index(i))
print(lst.index(i))
lst_1.append(i.index(j))
print(i.index(j))
temp_lst.append(lst_1)
print (temp_lst)
我的IDLE的结果是:
0
0
1
1
1
1
[[0, 0], [1, 1], [1, 1]]
请注意,“X”IN THE MIDDLE的位置和最后一个列表中的“X”是相同的,但不是。这是我的问题。请注意,当我将lst更改为:
时 lst = [ [ "X",[], [] ],
[ [], "X", [] ],
[ [], [], "X" ] ]
result: [[0, 0], [1, 1], [2, 2]]
python的结果显示了最后一个“X”的正确位置,但是在前一个“X”中它给出了最后一个“X”的强势位置
请帮助谢谢
答案 0 :(得分:1)
在外部循环中,在最后一次迭代中,您将测试文字数组的索引:[[],["X"],[]]
。所以Python通过相等找到第一个:它与第二个项目相同。
答案 1 :(得分:0)
正如Jeff Meatball Yang所说,索引的作用使得它首先出现在列表中。我会做那样的事情
lst = [["X", [], []],
[[], "X", []],
[[], "X", []]]
temp_lst = []
for i in range(len(lst)):
lst_1 = []
for j in range(len(lst[i])):
if lst[i][j] == "X":
lst_1.append(i)
print(i)
lst_1.append(j)
print(j)
temp_lst.append(lst_1)
print (temp_lst)
该代码的结果是:[[0,0],[1,1],[2,1]]