[programmers]-2つ引いてもう1つ追加


1. Problem 📃


https://programmers.co.kr/learn/courses/30/lessons/68644

次の問題は、整数配列が指定されている場合、異なるインデックスから2つの数値を抽出し、作成可能なすべての数値を昇順にソートすることによって返す関数を作成することです.

2. Logic 👨‍🏫

  • まずすべての可能な状況を合わせて
  • 重複除外
  • 昇順配列
  • 3. Code 💻

    def solution(numbers):
        answer = []
        for i in range(len(numbers)):
            for j in range(i+1, len(numbers)):
                answer.append(numbers[i] + numbers[j])
        return (sorted(list(set(answer))))

    4. Feedback 📚


    4.1重複除外


    4.1.1 setによる重複除外


  • 集合資料型には大きく2つの特徴がある.
    -繰り返しは許可されていません
    -順序がありません.
    この2つの特徴のうちの最初の特徴は、重複を除去するために使用することができる.
  • my_list = ['A', 'B', 'C', 'D', 'B', 'D', 'E']
    my_set = set(my_list)  #집합set으로 변환
    my_list = list(my_set)   #list로 변환
    print(new_list)
    출력된 값은 ['D', 'B', 'A', 'E', 'C']
    
    set方式で重複除外を行い,順序が混乱するのが欠点である.順序を守る必要がある場合は、複文を使用します.

    4.1.2 For文による重複除外

  • myリストのすべての要素を巡り、その要素がnewリストに存在するかどうかを確認し、その要素が存在しない場合はnewリストに追加します.複文と条件文を用いて順序を維持する.
  • my_list = ['A', 'B', 'C', 'D', 'B', 'D', 'E']
    new_list = []
    for v in my_list:
    	if v not in new_list:
            new_list.append(v)
    print(new_list)
    출력된 값 ['A', 'B', 'C', 'D', 'E']

    4.2リスト要素の追加、削除


    4.2.1 List要素の追加

  • append:要素の末尾に追加された
  • >>> a = [1, 2, 3, 4, 5]
    >>> a.append(6)
    >>> a
    [1, 2, 3, 4, 5, 6]
  • insert:リスト.index(入力するindex,value)
  • >>> a = [1, 2, 3]
    >>> a.insert[1, 5]
    >>> a
    [1, 5, 2, 3]
  • +演算子
  • を追加
    >>> m = [1, 2, 3]
    >>> n = [4, 5, 6]
    >>> k = m + n
    >>> k
    [1, 2, 3, 4, 5, 6]
    >>> k += [7, 8]
    >>> k
    [1, 2, 3, 4, 5, 6, 7, 8]
  • extendメソッド:リスト.extend(追加するリスト)
  • >>> a = [1, 2, 3]
    >>> a.extend([4, 5 ,6])
    >>> a
    [1, 2, 3, 4, 5, 6]

    4.2.2リスト要素の削除

  • delキーワードで
  • を削除
    >>> a = [1, 2, 3, 4, 5, 6, 7]
    >>> del a[1]
    >>> a
    [1, 3, 4, 5, 6, 7]
  • listのremoveメソッド
  • を削除
  • list.remove(検索するアイテム)
  • が見つからない場合、ValueError
  • が発生します.
    >>> a = [1, 2, 3, 4, 5, 6, 7]
    >>> a.remove(3)
    >>> a
    [1, 2, 4, 5, 6, 7]
    >>> a.remove(9)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: list.remove(x): x not in list
  • delキーワードとリスト内のindexメソッドを混合するとremove効果
  • が生成されます.
    >>> a = [1, 2, 3, 4, 5, 6, 7]
    >>> del a[a.index(3)]
    >>> a
    [1, 2, 4, 5, 6, 7]
    numbers = [0, 3, 6, 9]
    answer = [numbers[0] + numbers[1]] * len(numbers) * len(numbers)
    sum = 0
    for i in range(len(numbers)):
        for j in range(i+1, len(numbers)):
            sum = i*len(numbers) + j
            print(sum) # 출력 테스트
            answer[sum] = numbers[i] + numbers[j]
    sub = set(answer) #집합set으로 변환a
    answer1 = list(sub) #list로 변환
    answer1.sort()
    print(answer1) # 출력 테스트

    4.3 sort() vs sorted()


    4.3.1 sort()


    -sort関数はリスト名です.sort()フォーマットは「リストメソッド」で、リストの元の値を直接変更できます.
    list1 = [3, 1, 2]
    print("list1: ", list1)
    list2 = list1.sort() # 원본을 정렬하고 수정합니다 (in-place)
    print("=====정렬 후=====")
    print("list1: ", list1)
    print("list2: ", list2)
    
    # 아래는 출력 값 입니다.
    
    list1: [3, 1, 2]
    =====정렬 후=====
    list1 = [1, 2, 3]
    list2 = None

    4.3.2 sorted()


    -ソート関数は「ソート」(リスト名)形式で「組み込み関数」になり、リストの元の値はそのままで、ソート値を返します.
    list1 = [3, 1, 2]
    print("list1: ", list1)
    list2 = list1.sorted() # 원본을 유지하고 정렬한 새 리스트를 생성합니다.
    print("=====정렬 후=====")
    print("list1: ", list1)
    print("list2: ", list2)
    
    # 아래는 출력 값 입니다.
    
    list1: [3, 1, 2]
    =====정렬 후=====
    list1 = [3, 1, 2]
    list2 = [1, 2, 3]
    上のコードは最初から棒で解いていましたが、appendがあるとは知らなかったので、背負って解いてしまいました.私は本当にこのコードが6行になることに驚いて、Python、、、、あなたは知っているべきで、早く勉強して書いたもの.