Pythonのお勉強 Part68at TECHPythonのお勉強 Part68 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト305:デフォルトの名無しさん 22/10/15 18:48:06.23 w1fQiwU/0.net 処理で条件が変わるような場合は、whileにしてもハマる いつ終わるか判らないようなループは本質的に不安定 306:デフォルトの名無しさん 22/10/15 18:48:39.13 i+M+Mx9R0.net 再帰でいいのでは? 307:デフォルトの名無しさん 22/10/15 18:52:19.28 2u2iBEwS0.net >>300 そういうジェネレータ作ってrangeと置き換えればいいんじゃね 308:デフォルトの名無しさん 22/10/15 19:03:32.69 jl8SG5IY0.net あんま綺麗じゃないけど、こんな感じでいいのか? 競プロの連中ならもっとスマートなの書いてくれるはず text = "aaabbc" char = "abcdefghijklmnopqrstuvwxyz" char_dict = [] for c in char: ____count = 0 ____for t in text: ________if c == t: ____________count += 1 ____if count > 0: ________char_dict.append({"name":c, "count":count, "left":count}) char_dict = sorted(char_dict, key=lambda e: (e["left"], -e["count"]), reverse=True) result = "" pre = "" for _ in text: ____ci = 0 ____while True: ________now = char_dict[ci]["name"] ________if now == pre: ____________ci += 1 ________else: ____________result += now ____________pre = now ____________char_dict[ci]["left"] -= 1 ____________char_dict = sorted(char_dict, key=lambda e: (e["left"], -e["count"]), reverse=True) ____________break print(result) 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch