Jay*_*man 1 python tuples typeerror deque
下面的代码试图创建一个地图,显示从该地图上的每个方块到指定位置所需的最小移动次数.作为一个整体的功能在很大程度上与问题无关,但我认为我应该在上下文中提出我的问题.我也从集合中导入了deque.奇怪的部分来自第7行.我得到TypeError:'int'对象不可迭代.但是声明"distance_from_loc,f_loc = squares_to_check.popleft()"不应该试图以最好的知识迭代任何东西.任何帮助将不胜感激.
def complex_distance(self, loc):
row, col = loc
squares_to_check = deque((0, loc))
self.complex_distance_map = zeros((self.height, self.width), int) + 999
self.complex_distance_map[row][col] = 0
while squares_to_check:
distance_from_loc, f_loc = squares_to_check.popleft()
distance_from_loc += 1
for d in AIM:
n_loc = self.destination(f_loc, d)
n_row, n_col = n_loc
if distance_from_loc < self.complex_distance_map[n_row][n_col] and not self.map[n_row][n_col] == -4:
squares_to_check.append((distance_from_loc, n_loc))
self.complex_distance_map[n_row][n_col] = distance_from_loc
Run Code Online (Sandbox Code Playgroud)
该行确实尝试迭代:
>>> a, b = 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
Run Code Online (Sandbox Code Playgroud)
这条线
squares_to_check = deque((0, loc))
Run Code Online (Sandbox Code Playgroud)
使用两个元素初始化双端队列,0而loc不是单个元素(0, loc).使用
squares_to_check = deque([(0, loc)])
Run Code Online (Sandbox Code Playgroud)
获得理想的结果.
| 归档时间: |
|
| 查看次数: |
1587 次 |
| 最近记录: |