You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何将带计数器的循环改写为Python列表推导式?

解决列表推导式中添加递增计数器的问题

这问题太常见啦!你手动维护counter的循环逻辑,刚好可以用Python内置的enumerate()函数来转成列表推导式,它能帮你在遍历的同时拿到元素和对应的索引值,这个索引就相当于你原来的counter

先看你原来的循环代码:

create_list = []
counter = 0
for x in my_list:
    create_list.append(f(x+counter))
    counter += 1

改成列表推导式的写法非常简洁:

create_list = [f(x + idx) for idx, x in enumerate(my_list)]

补充说明:

  • enumerate(my_list)会返回一系列元组,每个元组是(索引值, 对应元素),索引默认从0开始,和你原来的counter初始值完全一致。
  • 每次迭代时idx会自动递增1,完全替代了你手动counter += 1的操作。
  • 如果你的计数器需要从非0数字开始(比如从1),只需要给enumerate加第二个参数就行:
    create_list = [f(x + idx) for idx, x in enumerate(my_list, 1)]
    

举个实际例子验证:假设f = lambda n: n * 2my_list = [1, 2, 3],用原来的循环得到[2, 6, 10],用上面的列表推导式得到的结果完全相同,完美匹配你的需求!

内容的提问来源于stack exchange,提问作者George

火山引擎 最新活动