Python枚举列表设置开始索引但不增加结束计数

Don*_*the 6 python

我想循环遍历列表,列表从零开始,但列表起始索引为1,例如:

valueList = [1, 2, 3, 4]
secondList = ['a', 'b', 'c', 'd']

for i, item in enumerate(valueList, start=1):
    print(secondList[i])
Run Code Online (Sandbox Code Playgroud)

代码失败,索引超出范围错误(我意识到这是因为我在列表的长度-1加上起始值,并且python列表为零索引,因此使用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]) 
Run Code Online (Sandbox Code Playgroud)

枚举不是正确的选择,还有另一种方式吗?

Mar*_*ers 10

听起来好像你想要切片列表; 仍然从enumerate()一开始获得相同的指数:

for i, item in enumerate(valueList[1:], start=1):
Run Code Online (Sandbox Code Playgroud)

然后valueList第二个元素开始循环,匹配索引:

>>> valueList = [1, 2, 3, 4]
>>> secondList = ['a', 'b', 'c', 'd']
>>> for i, item in enumerate(valueList[1:], start=1):
...     print(secondList[i])
... 
b
c
d
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我只是使用zip(),或许结合itertools.islice():

from itertools import islice

for value, second in islice(zip(valueList, secondList), 1, None):
    print(value, second)
Run Code Online (Sandbox Code Playgroud)

islice()调用会为您跳过第一个元素:

>>> from itertools import islice
>>> for value, second in islice(zip(valueList, secondList), 1, None):
...     print(value, second)
... 
2 b
3 c
4 d
Run Code Online (Sandbox Code Playgroud)