当前位置:  开发笔记 > 编程语言 > 正文

python for循环枚举数组

如何解决《pythonfor循环枚举数组》经验,为你挑选了1个好方法。

enumerate是一个迭代器.迭代器只能使用一次; 在那之后,他们是空的.

简单(和惯用)解决方案是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))

在这种情况下,没有理由这样做.你只是浪费内存来构建列表.(至于速度,它对于非常小的列表来说可能要快一点,但对于非常大的列表来说可能要慢一些 - 但对于你的代码来说它可能无关紧要.)但是有些情况下它很有用,所以值得知道如何做.



1> abarnert..:

enumerate是一个迭代器.迭代器只能使用一次; 在那之后,他们是空的.

简单(和惯用)解决方案是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))

在这种情况下,没有理由这样做.你只是浪费内存来构建列表.(至于速度,它对于非常小的列表来说可能要快一点,但对于非常大的列表来说可能要慢一些 - 但对于你的代码来说它可能无关紧要.)但是有些情况下它很有用,所以值得知道如何做.


@DyZ需要以反向或随机访问顺序访问值,需要将它们传递给一个由于某种原因需要序列的函数,需要使用它多次而不是两次,作为微观优化在极少数情况下,您发现了两次瓶颈,并对您的实际数据进行了两种测试...如果遇到有用的情况,您通常会知道它.
推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有