您可以同时创建一个新列表和过滤器:
>>> li = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh']
>>> new_list = [item for index, item in enumerate(li) if index % 3 != 0]
>>> new_list
['second', 'third', 'fifth', 'sixth']
讨论
enumerate(li)
返回元组列表:(索引,项目):
[(0, 'first'), (1, 'second'), (2, 'third'), (3, 'fourth'), (4, 'fifth'), (5, 'sixth'), (6, 'seventh')]
我们只挑选那些索引为 % 3 != 0 的项目,这意味着删除索引为 0、3、6、...的项目
更新:不同的解决方案
如果您不介意使用 itertools:
>>> import itertools
>>> list(itertools.compress(li, itertools.cycle(range(3))))
['second', 'third', 'fifth', 'sixth']
cycle(range(3))
返回一个无限列表:
[0, 1, 2, 0, 1, 2, ...]
compress()
挑出那些不为零的项目。