[解決済み】Pythonのany関数とall関数はどのように機能するのですか?
質問
を理解しようとしているのです。
any()
と
all()
Pythonの組み込み関数が動作します。
私は、タプルを比較して、いずれかの値が異なっていれば
True
を返し、すべて同じであれば
False
. この場合、それらはどのように動作して [False, False, False] を返すのでしょうか?
d
は
defaultdict(list)
.
print d['Drd2']
# [[1, 5, 0], [1, 6, 0]]
print list(zip(*d['Drd2']))
# [(1, 1), (5, 6), (0, 0)]
print [any(x) and not all(x) for x in zip(*d['Drd2'])]
# [False, False, False]
私の知る限り、これは次のように出力されるはずです。
# [False, True, False]
(1,1)は同じ、(5,6)は異なる、(0,0)は同じなので。
なぜ、すべてのタプルでFalseと評価されるのですか?
どのように解決するのですか?
大まかに考えて
any
と
all
を一連の論理的な
or
と
and
演算子を使用します。
任意
any
を返します。
True
とき
のうち少なくとも1つの要素は
はTruthyである。について読む
真偽値のテスト。
すべて
all
を返します。
True
のときだけです。
すべての要素
はTruthyである。
真理値表
+-----------------------------------------+---------+---------+
| | any | all |
+-----------------------------------------+---------+---------+
| All Truthy values | True | True |
+-----------------------------------------+---------+---------+
| All Falsy values | False | False |
+-----------------------------------------+---------+---------+
| One Truthy value (all others are Falsy) | True | False |
+-----------------------------------------+---------+---------+
| One Falsy value (all others are Truthy) | True | False |
+-----------------------------------------+---------+---------+
| Empty Iterable | False | True |
+-----------------------------------------+---------+---------+
注1: 空のイテラブルのケースは、公式ドキュメントで以下のように説明されています。
戻る
True
イテラブルのいずれかの要素が真である場合。 イテラブルが空の場合はFalse
どの要素も真ではないので、次のようになります。
False
この場合
戻る
True
イテラブルのすべての要素が真である場合 ( またはイテラブルが空の場合 ).
どの要素も false ではないので、次のように返されます。
True
この場合
注2:
について、もう一つ重要なことがあります。
any
と
all
というのは、結果を知った瞬間に実行がショートカットされるからです。利点は、イテラブル全体を消費する必要がないことです。例えば
>>> multiples_of_6 = (not (i % 6) for i in range(1, 10))
>>> any(multiples_of_6)
True
>>> list(multiples_of_6)
[False, False, False]
ここです。
(not (i % 6) for i in range(1, 10))
を返すジェネレータ式です。
True
が6の倍数であるとき。
any
を繰り返し実行します。
multiples_of_6
と出会い
6
を返すと、Truthyの値を見つけるので、すぐに
True
で、残りの
multiples_of_6
は反復されない。これを印刷するとこうなります
list(multiples_of_6)
の結果である。
7
,
8
と
9
.
この優れたものを非常に巧妙に使っているのが この答え .
この基本的な理解で、あなたのコードを見てみると
any(x) and not all(x)
これは、少なくとも1つの値がTruthyであることを確認しますが、すべてではありません。そのため
[False, False, False]
. もし、本当に両方の数字が同じでないことを確認したいのであれば。
print [x[0] != x[1] for x in zip(*d['Drd2'])]
関連
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】 NameError: グローバル名 'xrange' は Python 3 で定義されていません。
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] Pythonでシングルトンを作成する
-
[解決済み] Pythonのsuper()は多重継承でどう動くのか?
-
[解決済み] Pythonの「名前付きタプル」とは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pythonを使ったオフィス自動化コード例
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
PythonによるExcelファイルの一括操作の説明
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない