Als ich AtCoder-Problem machte und die "Nummer in Wörterbuchreihenfolge" erhalten wollte, musste ich die Reihenfolge finden. Angenommen, Sie bilden ein Wort mit a, b, c, d, e. In diesem Moment,
Ich habe gelernt, wie es geht, also habe ich ein Memorandum gemacht.
Sehr einfach mit itertools Permutationen Erstellen Sie im folgenden Code ein Wort mit a, b, c, d, e und überprüfen Sie, welche Zahl "abcde", "deabc" ist.
Code
import itertools
abcde_list = ["a", "b", "c", "d", "e"]
A = list(itertools.permutations(abcde_list))
# →[('a', 'b', 'c', 'd', 'e'), ('a', 'b', 'c', 'e', 'd'), ('a', 'b', 'd', 'c', 'e'), ('a', 'b', 'd', 'e', 'c'), ('a', 'b', 'e', 'c', 'd'), ('a', 'b', 'e', 'd', 'c'), ('a', 'c', 'b', 'd', 'e').....
#Beachten Sie, dass es sich um ein Tupel handelt
abcde_tuple = ("a", "b", "c", "d", "e")
deabc_tuple = ("d", "e", "a", "b", "c")
abcde_num = (A.index(abcde_tuple))
# →0
deabc_num = (A.index(deabc_tuple))
# →90
Beachten Sie, dass der *** Index bei 0 beginnt. *** ***
Recommended Posts