为什么我无法进入以下代码的for循环
def maximumSwap(num):
A = map(int, str(num))
last = {x: i for i, x in enumerate(A)}
for i, x in enumerate(A):
print(i, x)
for d in range(9, x, -1):
if last.get(d, None) > i:
A[i], A[last[d]] = A[last[d]], A[i]
return int("".join(map(str, A)))
return num
我能够打印最后一个但无法进入for循环。我还想知道int(num)
和map(int, str(num))
答案 0 :(得分:2)
A
是一个迭代器,你不能运行两次相同的迭代器。例如,请参阅http://stackoverflow.com/questions/3266180/ ...
如果确实需要循环数据两次,则必须重新创建迭代器或按顺序存储数据,可能是list
:
方法1:
last = {x: i for i, x in enumerate(map(int, str(num)))}
for i, x in enumerate(map(int, str(num))):
方法2:
A = list(map(int, str(num)))
last = {x: i for i, x in enumerate(A)}
for i, x in enumerate(A):