3
時々、複数の軸がaxes[0]
にあり、時には1つしかない場合があります。だから、それ/それらを反復するために、私は次のようにします。オブジェクトが反復可能かどうかわからないときの反復方法
for ax,_x in [(axes[0], X[0])] if len(X)==1 else zip(axes[0],X):
これを行うための慣用的な方法は何ですか?
時々、複数の軸がaxes[0]
にあり、時には1つしかない場合があります。だから、それ/それらを反復するために、私は次のようにします。オブジェクトが反復可能かどうかわからないときの反復方法
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
ブロックでラップ。
他の人がいるがコメントしたようにX
がまだあるサイズ1
のリストであれば、あなたは別の例を作成しないでくださいあなたが長いのiterableの全ての値で動作し、短絡1の欠損値のデフォルトを提供し、とitertoolsからzip_longest
を使用する必要がある場合
>>> l = [1, 2, 3]
>>> y = [1, 2]
>>> list(zip(l, y))
[(1, 1), (2, 2)]
:あなたはzip
を使用している場合は反復可能それが最短のiterableで停止します適切なfillvalue
:
>>> from itertools import zip_longest
>>> list(zip_longest(l, y, fillvalue=0))
[(1, 1), (2, 2), (3, 0)]
https://docs.python.org/3/glossary.html#term-eafpを – jonrsharpe
'はhasattr(軸[0]、 "__iter __")'や 'てみてください/ except'、多分? – jDo
'zip(axes [0]、X)'だけで長さをチェックする必要はありません。しかし、あなたの目的が列を作成しているときに、iterablesの長さを認識していないときには、itertools.zip_longest()を使用することが最善の方法です(もっと長いiterableからすべての項目を保持したい場合) '。 – Kasramvd