一般来说,当您想在Python中迭代列表的一部分时,最简单的方法就是对列表进行切片.
# Iterate over everything except the first item in a list
#
items = [1,2,3,4]
iterrange = (x for x in items[1:])
但是slice操作符创建了一个新的列表,在很多情况下甚至不需要这样做.理想情况下,我希望使用某种切片功能来创建生成器,而不是新的列表对象.类似的事情可以通过创建一个生成器表达式来实现,该表达式使用range
只返回列表的某些部分:
# Create a generator expression that returns everything except
# the first item in the list
#
iterrange = (x for x, idx in zip(items, range(0, len(items))) if idx != 0)
但这有点麻烦.我想知道是否有更好、更优雅的方法来做到这一点.那么,对列表进行切片以创建生成器表达式而不是创建新的列表对象的最简单方法是什么?