python基础——enumerate

enumerate是python的内置函数,可以快速得到一个可迭代元素中的下标和对应的元素,返回一个枚举对象,enumerate第一个参数是可迭代对象,第二个参数指定索引起始值,默认从0开始
a = [1,2,3,4,5]

for index, value in enumerate(a):
	print(f"{index}: {value}")

for index, value in enumerate(a, 10):
	print(f"{index}: {value}")
输出:
0: 1
1: 2
2: 3
3: 4
4: 5
10: 1
11: 2
12: 3
13: 4
14: 5
enumerate的实现是通过迭代器的方式生成的,具体实现方式可以参考以下代码:
def enumerate(iterable, start=0):
	for value in iterable:
		yield start, value
		start += 1

以前写代码的一个毛病:通过len(iterable)得出一个可迭代对象的长度,再用range函数进行for循环,通过下标取到对应的值,尤其是在双重循环的时候内层循环用到外层循环的值时这种用法更为明显,完全可以使用enumerate显得更加美观,举个例子:
以前的写法:

import time

a = [0] * 1000 + [1]
b = [0] * 10000

count = 0
start = time.time()
for i in range(len(a)):
    for j in range(len(b)):
        count += 1
        if a[i] > b[j]:
            print("yes")
            break
end = time.time()
print(end-start)
print(count)

输出:
yes
2.8632888793945312
10000001

现在的写法:

import time

a = [0] * 1000 + [1]
b = [0] * 10000

count = 0
start = time.time()
for index_a, value_a in enumerate(a):
    for index_b, value_b in enumerate(b):
        count += 1
        if value_a > value_b:
            print("yes")
            break
end = time.time()
print(end-start)
print(count)

输出:
yes
2.0301051139831543
10000001

同样是一千万次循环,虽然第二种方式的代码量没有减少,但是执行时间变少了,效率就相应提高了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值