名單上使用ITER我希望能夠做到這一點:具有缺省值
foo = ['a', 'b']
bar = iter(foo, "default")
val = next(bar)
while val !== "default":
print(val)
val = next(bar)
但是,在創建ITER對象時不會因爲第二個參數的工作。我從文檔中看到,這改變了第一個值的使用方式:
返回一個迭代器對象。根據第二個參數的存在,第一個參數被解釋得非常不同。沒有第二個參數,對象必須是支持迭代協議(
__iter__() method
)的集合對象,或者它必須支持序列協議(整數參數從0開始的__getitem__() method
)。如果它不支持這兩種協議,則會引發TypeError。如果給出了第二個參數sentinel,那麼object必須是可調用的對象。在這種情況下創建的迭代器將爲每個對__next__() method
的調用調用沒有參數的對象;如果返回的值等於sentinel,則會觸發StopIteration,否則將返回該值。
但我沒有看到一個Python的方式做我想做的,而不訴諸try/catch
(又名本)
bar = iter(foo)
try:
while True:
print(next(bar))
except StopIteration:
pass
那麼,爲什麼你不使用'for'循環呢? – Kupiakos
因爲下一次代碼流需要跳過N次迭代。我不想訪問每個元素(但在循環體中確定跳過哪些元素和多少元素) – AnilRedshift