有时我在 axes[0]
中有多个轴,有时只有一个。因此,为了迭代它/它们,我使用以下内容:
for ax,_x in [(axes[0], X[0])] if len(X)==1 else zip(axes[0],X):
执行此操作的惯用方法是什么?
最佳答案
一般来说,最好的方法就是迭代。 Don't ask for permission (使用 if
检查,而不是将其包装在 try-except
block 中以处理“宽恕”情况。
正如其他人所评论的那样,如果 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)]
关于python - 当您不知道您的对象是否可迭代时如何迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38153008/