アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下は、クイックソートをラムダ式で書いたものなのですが、

qs = lambda d: qs([x for x in d[1:] if x <= d[0]]) + [d[0]] + qs([x for x in d if x > d[0]]) if d else []

if d else []
はどんな意味になるのでしょうか?
もた、この文は、どこに掛かるのでしょうか?

質問者からの補足コメント

  • pythonです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/11/28 17:53

A 回答 (3件)

このifは3項演算子。



A if B else C
BがtruthyならA、FalsyならCが返る。

if~elseの演算の優先順位はほぼ最下位だから
Aはlambdaの中味の、if~elseより左側全部。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2022/12/02 22:05

> if d else []


> はどんな意味になるのでしょうか?

dが空リストでない時、じゃなければ[]を返せ

> もた、この文は、どこに掛かるのでしょうか?

qs([x for x in d[1:] if x <= d[0]]) + [d[0]] + qs([x for x in d if x > d[0]])

全体に。

元ネタは「Haskellのクイックソート」でしょう。
「Haskell クイックソート」で検索してみればイイです。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2022/12/02 22:05

言語はなに?

この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!