您可以同时创建一个新的列表并进行筛选:
>>> 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()
函数会选择那些不为零的项目。