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]
。 如果切片可能变得很大,则使用切片避免复制内存可能更好