CK 027| tuple(python)



質問する


🔗[2019ココア開発者冬季実習|tuple]
数え切れない、順序付けされた、またはある順序で並べられた要素の集合を「tuple」(tuple)と呼ぶ.n個の要素を有するtupleをn tupleと呼び、以下のように表すことができる.
  • (a1, a2, a3, ..., an)
    Tupleには以下の性質があります.
  • 重複する要素
  • が存在する可能性があります.ex : (2, 3, 1, 2)
  • 要素には固定された順序があり、要素の順序が異なる場合、異なるトーンである.ex : (1, 2, 3) ≠ (1, 3, 2)
  • tupleの要素数は限られている.
    要素の個数がnであり、重複する要素(a 1,a 2,a 3,...,an)がない場合(ただし、a 1,a 2,...,anは自然数)、集合記号「{」,「}」を用いて表すことができる.

  • {{a1}, {a1, a2}, {a1, a2, a3}, {a1, a2, a3, a4}, ... {a1, a2, a3, a4, ..., an}}
    例えば、tupleが(2、1、3、4)である場合

  • {{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}}
    に表示されます.この場合、集合は要素順序の影響を受けません.

  • {{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}}

  • {{2, 1, 3, 4}, {2}, {2, 1, 3}, {2, 1}}

  • {{1, 2, 3}, {2, 1}, {1, 2, 4, 3}, {2}}
    同じ例(2、1、3、4)をすべて表します.
  • パラメータに特定のtupleを表す集合を含む文字列sが与えられた場合、解関数を完了し、sで表されるtupleを配列に戻します.

    せいげんじょうけん

  • sの長さは5以上100000以下である.
  • sは、数字と「{」、「}」、「,」のみで構成されています.
  • の数字は0で始まりません.
  • sは、繰り返し要素のないtupleを常に正確に表す.
  • sで表されるtupleの要素は100000より大きい自然数である.
  • 入力は、
  • を返す配列の長さが1または500未満の場合にのみ与えられます.
  • 私が書いたコード

    from itertools import chain
    def solution(s):
        answer = []
        s = list(chain(*[i.split(",") for i in sorted(s[2:-2].split("},{"), key=len)]))
        
        for num in s :
            if int(num) not in answer :
                answer.append(int(num))
        
        return answer
    以下の手順に従って説明した.
  • inputは{{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}}のように両端に括弧を付けるので、両端括弧を外し、中間括弧をsplitにします.次いで、key=lenを使用して短い要素から昇順に並べ替える、
  • .
    (1) result : ['3', '2,3', '4,2,3', '2,3,4,1']
    2.(1)の結果からカンマを削除するために、各要素の,itertools | chainおよびsplit(",")に削除し、リストに入れる.
    (2) result : ['3', '2', '3', '4', '2', '3', '2', '3', '4', '1']
  • 2answerにない場合、整数型に変換され、読み込まれて戻ります.
  • 他人の解答

    import re
    from collections import Counter
    
    def solution(s):
    
        s = Counter(re.findall('\d+', s))
        return list(map(int, [k for k, v in sorted(s.items(), key=lambda x: x[1], reverse=True)]))
    
    実際、正規表現を使いたいと思っていましたが、reの方法の勉強が足りないようです.やはり多くの人のコードを見てこそ、視野が広がります!