Python - 循环列表中的选定索引

Val*_*hio 1 python

假设我有一个包含10个数字的列表: a = [0,1,2,3,4,5,6,7,8,9]

我想得到第二位数字,第5-8位数字和最后一位数字.就像是:

for i in (a[1], a[4:7], a[9]):
    print(i)
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

Bri*_*uez 9

import itertools

for i in itertools.chain(a[1:2], a[4:7], a[9:10]):
    print(i)
Run Code Online (Sandbox Code Playgroud)

您需要使用单元素切片,因为itertools.chain要求每个arg都是可迭代的.

对于动态可迭代列表,您可以使用itertools.chain.from_iterable:

iterables = [a[1:2], a[4:7], a[9:10]]
for i in itertools.chain.from_iterable(iterables):  # Better than chain(*iterables)
    print(i)
Run Code Online (Sandbox Code Playgroud)


f5r*_*e5d 6

使用解包操作符 *

for i in (a[1], *a[4:7], a[9]):
    print(i)
Run Code Online (Sandbox Code Playgroud)


Sco*_*ter 5

您可以构建所需元素的新列表:

for i in (a[1:2]+a[4:7]+a[9:10]):
    print(i)
Run Code Online (Sandbox Code Playgroud)


wwi*_*wii 5

使用operator.itemgetter

import operator
stuff = operator.itemgetter(1,4,5,6,-1)
for thing in stuff(a):
  print(thing)
Run Code Online (Sandbox Code Playgroud)