Python循环列举的数组

2024-07-08 08:47:25 发布

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

def miniMaxSum(arr):
    #
    # Write your code here.
    #
    eArr = enumerate(arr)
    maxNum = 0
    indexMax = -1;
    for a,b in eArr:
        if b > maxNum:
            maxNum = b
            indexMax = a

    for index,number in eArr:
        print("hello")

为什么不打印任何东西?我把print hello部分放到第二个for循环中,看它是否循环。你知道吗


Tags: inhelloforyourheredefcodewrite
1条回答
网友
1楼 · 发布于 2024-07-08 08:47:25

enumerateiterator。迭代器只能使用一次;在那之后,它们是空的。你知道吗

简单的(惯用的)解决方案是为每个循环创建一个新的enumerate迭代器:

def miniMaxSum(arr):
    maxNum = 0
    indexMax = -1;
    for a,b in enumerate(arr):
        if b > maxNum:
            maxNum = b
            indexMax = a

    for index,number in enumerate(arr):
        print("hello")

如果需要多次使用迭代器,可以将其保存到列表中,然后重用该列表。换条线就行了

eArr = enumerate(arr)

…对此:

eArr = list(enumerate(arr))

在这种情况下,没有理由这么做。你只不过是在浪费内存来建立这个列表。(至于速度,对于非常小的列表可能要快一点,但是对于非常大的列表可能要慢一点,但是对于您的代码来说,这两种方式可能都不重要。)但是在某些情况下,它是有用的,因此值得知道如何做。你知道吗

相关问题 更多 >

    热门问题