[解決済み] リスト内のすべての要素が同一であるかどうかをチェックする
2022-03-20 18:38:36
質問
を取り込む関数が必要です。
list
を出力し
True
入力リストのすべての要素が標準の等号演算子で互いに等しいと評価され、かつ
False
でなければ
私は、隣接する要素を比較するリストを繰り返し実行するのが最善であると感じており、次に
AND
その結果得られたすべてのブール値。しかし、それを行うための最もPythonicな方法は何なのかわかりません。
どのように解決するのか?
使用方法
itertools.groupby
(参照
その
itertools
レシピ
):
from itertools import groupby
def all_equal(iterable):
g = groupby(iterable)
return next(g, True) and not next(g, False)
または
groupby
:
def all_equal(iterator):
iterator = iter(iterator)
try:
first = next(iterator)
except StopIteration:
return True
return all(first == x for x in iterator)
代わりの一発芸はいくつもありますよ。
-
入力を集合に変換し、その集合が1個または0個(入力が空の場合)しか持たないことを確認する。
def all_equal2(iterator): return len(set(iterator)) <= 1
-
最初の項目を除いた入力リストと比較する
def all_equal3(lst): return lst[:-1] == lst[1:]
-
def all_equal_ivo(lst): return not lst or lst.count(lst[0]) == len(lst)
-
def all_equal_6502(lst): return not lst or [lst[0]]*len(lst) == lst
しかし、彼らには次のようなデメリットがあります。
-
all_equal
とall_equal2
は任意のイテレータを使用できますが、他のものはシーケンス入力、通常はリストやタプルのような具体的なコンテナを取る必要があります。 -
all_equal
とall_equal3
は、違いが見つかり次第、停止します(いわゆる " ショートサーキット であることが分かっても、リスト全体を反復する必要があります。False
最初の2つの要素を見ただけで -
で
all_equal2
は、コンテンツが ハッシュ化 . リストのリストではTypeError
を例にとります。 -
all_equal2
(最悪の場合)とall_equal_6502
はリストのコピーを作成します。つまり、2倍のメモリを使用する必要があります。
Python 3.9では
perfplot
の場合、このようなタイミングになります(下
Runtime [s]
が良い)。
関連
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] リストの要素数を取得する方法
最新
-
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 Decorator 練習問題
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
PythonはWordの読み書きの変更操作を実装している
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
PythonによるExcelファイルの一括操作の説明
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。