メモ書き:並び替え問題(sort,sorted)

安西くん、馬場くん、千葉くん、の男子3人、大東さん、遠藤さん、藤田さん、後藤さん、の女子4人が1列に並ぶとき、以下の問題に答えよ。
(1)両端が男子である並び方は何通りあるか、答えよ。
(2)女子4人が続いて並ぶ並び方は何通りあるか、答えよ。
(3)後からやってきた幡田さんを中心に体操隊形に、ひらけ。

はい。
pythonのsortやsortedのメモ書きです。

>|python||
before = ["安西くん","馬場くん","千葉くん","大東さん","遠藤さん","藤田さん","後藤さん"]

print(before)
print(before.sort())
print()
print(before)
print(before.sort())
|

before = ["安西くん","馬場くん","千葉くん","大東さん","遠藤さん","藤田さん","後藤さん"]

print(before)
print(sorted(before))
print()
print(before)
print(sorted(before))


「list.sort()」

「list.sort()」はもとのリストそのものを変更する
「list.sort()」そのものはNoneを返す

「sorted(list)」

「sorted(list)」はもとのリストそのものを変更しない
「sorted(list)」はもとのリストそのものを変更しない

共通点

before = ["安西くん","馬場くん","千葉くん","大東さん","遠藤さん","藤田さん","後藤さん"]

print(before)
print(before.sort(reverse=True))
print()
print(before)
print(before.sort())
before = ["安西くん","馬場くん","千葉くん","大東さん","遠藤さん","藤田さん","後藤さん"]

print(before)
print(sorted(before,reverse=True))
print()
print(before)
print(sorted(before))


どちらも引数「reverse」をTrueにすることで逆順にできる

余談

安西くん、馬場くん、千葉くん、の男子3人、大東さん、遠藤さん、藤田さん、後藤さん、の女子4人が1列に並ぶとき、以下の問題に答えよ。
(1)両端が男子である並び方は何通りあるか、答えよ。
(2)女子全員が続いて並ぶ並び方は何通りあるか、答えよ。
(3)後からやってきた幡田さんを中心に体操隊形に、ひらけ。

の解答です。高校数学でしたっけ。

(1)

両端が男子である並び方は3人の男子のうち2人を並べる並べ方です。そのため、3*2通り。(これを確か3P2とか書きますがこれ関連のブログ表記の仕方が分かりません。)
残りの5人の順列の数が5!=5*4*3*2*1通り。
この2つの積を取れば求められるので正答は 3*2 * 5! = 720 通り
違ったら言ってね。

(2)

女子4人全員を群として扱います。この群内の順列が4!通り。
そして、群と残りの男子3人の並び替えが、(1+3)!通り。
この2つの積を取れば求められるので正答は4! * (1+3)! = 576 通り

(3)

うるせぇ