python - 当您不知道您的对象是否可迭代时如何迭代

标签 python python-3.x

有时我在 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/

相关文章:

javascript - 如何在 Braintree JS 安全自定义表单中发布 "amount"变量?

python - 值错误 : cannot switch from manual field specification to automatic field numbering

python - 从列表中提取与第三个列表中包含的另一个列表的项目具有相同索引的值

python - 在 Django 中更新表单后出现 NoReverseMatch 错误

python - 如何在字符串中找到 float - Python?

python - 在 Quandl 数据上用 Python 实现 ARIMA 时出错

python-3.x - Python Tornado 从另一个线程发送 WebSocket 消息

python - 关于python中全局变量的困惑

python - 如何在用户注册时生成一个魔数(Magic Number)并将其填充到数据库中?

带有列表和追加的 Python 奇怪行为