在Python中跳過for
循環中的第一個元素是否有強大的通用方法?如何跳過`for`循環中的第一個元素?
我能想到的唯一的辦法是用手工寫一個特殊的生成:
def skipFirst(it):
it = iter(it) #identity for iterators
it.next()
for x in it:
yield x
,並將其用於例如像:
for x in skipFirst(anIterable):
print repr(x)
和喜歡:
doStuff(str(x) for x in skipFirst(anIterable))
等等:
[ x for x in skipFirst(anIterable) if x is not None ]
我知道我們可以在列表(x for x in aList[1:])
做切片但是這使得副本,併爲所有序列,迭代器,收藏等
哇,我不知道那個版本。但是我可以直接寫'doStuff(str(x)for x in next(anIterable,None))'嗎?我不這麼認爲。 – user2622016
@ user2622016:我基本上只看到了你的問題的前半部分,使用'it.next()'並捕獲'StopIteration';有'下一個(它,無)'可以更容易閱讀。 –
哦不,對不起,'next('asdf',None)'不起作用,它不會隱式地將序列改變爲迭代器。 – user2622016