繁体   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