我想循环遍历一个计数器从零开始但列表索引从1开始的列表,例如:
valueList = [1, 2, 3, 4]
secondList = ['a', 'b', 'c', 'd']
for i, item in enumerate(valueList, start=1):
print(secondList[i])
代码因索引超出范围错误而失败(我意识到这是因为我以list-1的长度加上起始值结束,并且python列表为零索引,因此以这种方式使用I调用另一个列表中的第I个元素是无效的)。下面的方法是有效的,但是添加的i大于零的测试看起来不是pythonic。
valueList = [1, 2, 3, 4]
secondList = ['a', 'b', 'c', 'd']
for i, item in enumerate(valueList, start=0):
if i > 0:
print(secondList[i])
列举不是正确的选择,还有别的办法吗?
听起来好像你想把列表切片;仍然从一开始获取相同的索引:
然后从第二个元素开始循环
valueList
,并使用匹配索引:在这种情况下,我只使用
zip()
代替,可能与itertools.islice()
结合使用:islice()
调用为您跳过第一个元素:问题不是枚举,也不是
start
参数,而是这样一个事实:当您执行start=1
操作时,您正在从1
枚举到valueList+1
:当然,当您试图访问
secondList[4]
时,没有可用的值!您可能需要:也就是说,我不确定你到底想达到什么目的。如果要跳过
secondList
的第一个值,那可能是一个解决方案,即使不是最有效的解决方案。更好的方法是实际使用slice操作符:如果要使用自然枚举(而不是计算机的枚举)遍历列表,即从
1
而不是0
开始,那就不是要这样做了。要显示自然索引并使用计算机索引,只需执行以下操作:最后,可以使用
zip()
而不是枚举来链接两个列表的内容:它将显示与同一索引处的
secondList
值相连的valueList
的每个值。相关问题 更多 >
编程相关推荐