为什么我不能为下面的代码输入for循环以及int(num)和map(int,str(num))之间的差异

2024-10-04 01:23:11 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么我不能为下面的代码进入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))之间有什么区别


Tags: 代码inmapforreturnifdefrange
1条回答
网友
1楼 · 发布于 2024-10-04 01:23:11

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):

相关问题 更多 >