有时我在axes[0]
中有多个轴,有时只有一个。因此,为了迭代它/它们,我使用以下内容:
for ax,_x in [(axes[0], X[0])] if len(X)==1 else zip(axes[0],X):
这样做的惯用方法是什么?
答案 0 :(得分:0)
一般来说,最好的方法就是迭代。 Don't ask for permission(使用if
检查,而不是将其包装在try-except
块中以处理“宽恕”案例。
正如其他人所评论的那样,如果X
是一个大小为1
但仍可迭代的列表,则不应创建不同的案例。如果您使用zip
,它将以最短的可迭代次数停止:
>>> l = [1, 2, 3]
>>> y = [1, 2]
>>> list(zip(l, y))
[(1, 1), (2, 2)]
如果您需要处理较长迭代的所有值并为短路的值提供缺省值,请使用来自itertools的zip_longest
并使用适当的fillvalue
:
>>> from itertools import zip_longest
>>> list(zip_longest(l, y, fillvalue=0))
[(1, 1), (2, 2), (3, 0)]