LoginSignup
0
2

More than 5 years have passed since last update.

[python]あるリストが、別のリストの並び替えかを判定する関数

Last updated at Posted at 2017-10-12

欲しかったもの

二つのリストが、同じ種類/個数の要素をもつ場合(≒内容が同じか単に順番を並べ替たものの場合)にTrueを、そうでない場合にFalseを返す関数。
例)
[1,2,3],[3,2,1]=>True
["b","a","r"],["b","e","a","r"]=>False
[1,"two",3],[1,"two",3]=>True
[1,1,1],[1,1,1,1]=>False

検索してもよさげなものを見つけられなかったので、サクっと作りました。こんなん組み込みであるだろJKって方がいましたら教えていただきたいです。

is_reordering
def is_reordering(list1, list2):
    list2 = list2[:]
    for element in list1:
        if element in list2:
            list2.remove(element)
        else:
            return False
    if list2:
        return False
    return True

list1の要素を順番に見て、list2にその要素があったらそれを取り除いているだけです(無かったらFalseを返す)。最後のifで、list2が空になったかを判定しています。これがないと、例)の一番最後のような場合にTrueが返ってしまいます。
車輪の再発明をしてしまった感がすごいですが、とりあえずあげておきます。

0
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2