簡體   English   中英

當你不知道你的對象是否可以迭代時如何迭代

[英]How to iterate when you don't know if your object will be iterable

有時我在axes[0]有多個軸,有時只有一個axes[0] 所以要迭代它/它們,我使用以下內容:

for ax,_x in [(axes[0], X[0])] if len(X)==1 else zip(axes[0],X):

這樣做的慣用方法是什么?

通常,最好的方法是迭代。 不要求許可if檢查,請將其包裝在try-except塊中以處理“寬恕”案例。

正如其他人所評論的那樣,如果X是大小為1的列表,那么你不應該創建不同的情況,它仍然是可迭代的。 如果您使用zip ,它將以最短的可迭代次數停止:

>>> l = [1, 2, 3]    
>>> y = [1, 2]

>>> list(zip(l, y))
[(1, 1), (2, 2)]

如果您需要的更長的迭代所有的值工作,為短路一個的遺漏值提供默認值,使用zip_longest從適當itertools fillvalue

>>> from itertools import zip_longest

>>> list(zip_longest(l, y, fillvalue=0))
[(1, 1), (2, 2), (3, 0)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM