通过2个变量遍历Python列表

Use*_*842 7 python

在JavaScript中,我可以使用两(2)个指针从列表的开头和结尾获取值,然后递增/递减指针以继续。例如:

for (let i = 0, j = list.length - 1; i < j; i++, j--) {
    console.log(i, j);
}
Run Code Online (Sandbox Code Playgroud)

我将如何在Python中完成相同的任务?我知道我可以通过执行以下操作获取当前索引:

for index in enumerate(list):
    print(index)
Run Code Online (Sandbox Code Playgroud)

但是,我又如何初始化另一个指针来从末尾开始呢?

Ror*_*ton 6

我假设您想要一个可以对索引进行任何处理的解决方案,而不仅仅是打印出来。Python的for循环还有其他优势。因此,使用while循环。

i = 0
j = len(alist)
while i < j:
    print(i, j)  # or console.log(i, j) or whatever you want here
    i += 1
    j -= 1
Run Code Online (Sandbox Code Playgroud)

这是一个类似using的东西zip,它更像pythonic。在这里,我说明了除了打印索引以外的其他操作。

alist = [3, 1, 4, 1, 5, 9]
llen = len(alist)
for i, j in zip(range(llen // 2), range(llen - 1, -1, -1)):
    print(alist[i], alist[j])
Run Code Online (Sandbox Code Playgroud)

但是,忽略索引而只使用列表中的项,则更加Python化,如

alist = [3, 1, 4, 1, 5, 9]
llen = len(alist)
for u, v in zip(alist[:llen // 2], alist[::-1]):
    print(u, v)
Run Code Online (Sandbox Code Playgroud)

  • `console.log`适用于JS,不适用于python。使用`print(i,j)`代替 (2认同)

dmi*_*yro 3

这是一个示例,说明如何做到这一点。将第二个索引作为长度减去索引减一的函数:

l = [1, 2, 3, 4]
for i, _ in enumerate(l):
    print(l[i], l[len(l)-i-1])
Run Code Online (Sandbox Code Playgroud)

这将输出

(1, 4)
(2, 3)
(3, 2)
(4, 1)
Run Code Online (Sandbox Code Playgroud)

不打印索引本身,但如果您选择这样做,您可以打印它们。