0

重複の可能性:
リスト内のすべての要素が同一であるかどうかを確認します

リストのすべての要素が等しいかどうかを確認したいと思います。私はこれを行うことができませんでした:

if all (x == x for x in (a, b, c, d)):
    ...

Pythonでこれを行うための非常にミニマルでエレガントな方法はありますか?

4

4 に答える 4

5

リストにハッシュ可能な要素しかない場合は、セットを使用できます。

たとえば、リストに名前が付けられている場合、次のlstことができます。

if (len(set(lst)) <= 1):
    ....

セットはリスト内のすべての重複を排除するため、セットの長さが1の場合、すべての要素が同じであることを意味します。

于 2012-10-29T17:44:59.463 に答える
3
all(x == items[0] for x in items)

これはあなたが探しているものです。

そうしないとx==x、すべての値を最初の値と比較するのではなく、すべての値をそれ自体と比較することになります。

于 2012-10-29T17:44:53.620 に答える
0
first = my_list[0]
print all(x==first for x in my_list[1:])

動作するはずです

もっとエレガントかもしれません...(私は本当にそうは思いません...)

>>> if reduce(lambda item0,item1:item0 if item0==item1 else False,my_list) is not False:
...    print "OK ALL THE SAME!"
...
OK ALL THE SAME!
于 2012-10-29T17:43:53.603 に答える
-2

ここで回答し、パフォーマンスベンチマークを使用

お気に入り :lst[1:] == lst[:-1]

于 2012-10-29T17:46:21.663 に答える