Python 它在列表的一部分中列出

Python 它在列表的一部分中列出,python,list,iteration,subclass,slice,Python,List,Iteration,Subclass,Slice,iteritems在dict上可能有用 偶尔,iteritems对于列表的一部分很有用,可以(粗略地)实现如下: import itertools class List(list): def iteritems(self, slice=None): if slice is None: return enumerate(self) else: return itertools.izip(range(slice.start,slice.stop,slice.step), sel

iteritems
dict
上可能有用

偶尔,
iteritems
对于列表的一部分很有用,可以(粗略地)实现如下:

import itertools

class List(list):
  def iteritems(self, slice=None):
    if slice is None: return enumerate(self)
    else: return itertools.izip(range(slice.start,slice.stop,slice.step), self[slice])

if __name__ == "__main__":
  l=List("hAnGtEn")
  print l
  print list(l.iteritems())
  print list(l.iteritems(slice(1,7,2)))
输出:

['h', 'A', 'n', 'G', 't', 'E', 'n']
[(0, 'h'), (1, 'A'), (2, 'n'), (3, 'G'), (4, 't'), (5, 'E'), (6, 'n')]
[(1, 'A'), (3, 'G'), (5, 'E')]
是否应该使用更“pythonic”的列表切片语法

p、 美国

无法很好地处理某些特殊情况:例如,
stop=-1
start=None
step=None
。如何改进示例范围/切片实现?

您可以使用:

生成一个迭代器,从iterable返回选定的元素。如果start为非零,则将跳过iterable中的元素,直到到达start。之后,元素将连续返回,除非步骤设置高于导致跳过项的步骤。如果stop为None,则迭代将继续,直到迭代器耗尽(如果有);否则,它将停止在指定位置


但是,文档还指出,它不支持开始、停止或步骤的负值。

有关工作代码改进的讨论,请访问codereview.stackexchange.com。注意:转发至:
range(slice.start,slice.stop,slice.step)