Python列表理解访问索引/枚举可能吗?

考虑下面的Python代码,我将它添加到一个新的list2列表1的索引从1到3的所有项目:

for ind, obj in enumerate(list1): if 4> ind > 0: list2.append(obj) 

如果我没有通过枚举访问索引,你将如何使用python list comprehension编写这个?

就像是:

 list2 = [x for x in list1 if 4>ind>0] 

但由于我没有“印度”号码,这是否会工作? :

 list2 = [x for x in enumerate(list1) if 4>ind>0] 
 list2 = [x for ind, x in enumerate(list1) if 4 > ind > 0] 

如果使用enumerate可以访问索引:

 list2 = [x for ind, x in enumerate(list1) if 4>ind>0] 

除非你真正的用例更复杂,否则你应该使用@wimbuild议的列表片

 >>> list1 = ['zero', 'one', 'two', 'three', 'four', 'five', 'six'] >>> [x for ind, x in enumerate(list1) if 4 > ind > 0] ['one', 'two', 'three'] >>> list1[1:4] ['one', 'two', 'three'] 

对于更复杂的情况 – 如果你实际上不需要索引 – 迭代切片或边界更清晰

 list2 = [x*2 for x in list1[1:4]] 

要么

 from itertools import islice list2 = [x*2 for x in islice(list1, 1, 4)] 

对于小片,简单的list1[1:4] 。 如果切片可能变得很大,则使用切片避免复制内存可能更好