python如何获取列表中每个元素的下标位置
作者:刘志军
Git是编程中的基本技能之一,互联网公司几乎都在使用Git进行协作编程,昨天还有位禅友在微信上专门告诉我说星期五面试的时候刚好被问到 Git,幸好在这几天学了一下。Git并不难,但会Git至少可以说明一个人的学习能力或者说对技术的嗅觉能跟上主流,如果面试问你GitHub是什么都不知道,面试官就会对你打一个大的问号。
简单点评这一道题。
在使用 for 循环迭代一个列表时,有时我们需要获取列表中每个元素所在的下标位置是多少,例如 numbers = [10, 29, 30, 41],要求输出 (0, 10),(1, 29),(2, 30),(3, 41)
这道题的实现方式主要有两种方式,第一种方式是通过获取列表长度来迭代列表下标
for i in range(len(numbers)): print('({0}, {1})'.format(i, numbers[i]))
第二种方法是直接使用enumerate函数:
numbers = [10, 29, 30, 41] for index, value in enumerate(numbers): print(index, value)
后者才是更地道的写法,在Python之禅中有一条格言是:There should be on,and preferably only one,obvious way to do it. 就是说我们写代码的时候应该选择一种而且最好是唯一一种显而易见的方式来实现。
内置函数 enumerate 还可以接收一个默认参数 start ,用于指定 index 从哪个数开始,默认是0,不知道有多少禅友知道这个用法,如果你不知道,那么建议你遇到新知识就更加详细地了解一下官方文档,而不仅仅只是浅尝辄止 ,学会查文档也是一个很重要的学习方法。文档
大家提交的代码大部分都回答对了,但也有些问题代码,比如命名很随意:
numbers = [10, 29, 30, 41] for i, j in enumerate(numbers): print(i, j)
用 i 和 j 这种没有任何意义的名字显得很业余,有人说这只是练习,但如果练习都是这样的态度,很难说工作时你能取一个合理的名字。
还有禅友用list工厂函数返回一个新的列表,这种写法有点画蛇添足,而且在迭代超大的列表时会占用更多的内存,因为你又创建了一个新的列表。
numbers = [10,29,30,41] for i in list(enumerate(numbers)): print(i,end=' ')
胜者属于坚持到最后的人
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。