[Python]リストのプラス記号、extend/append差異(Python総合問題3にジャンプ)



私はずっとこの本でPythonの基础知识を勉强して、最后の練習問題partの中で不足点を総括すると同时に、この本の勉强にも挑戦しています!😣

第3四半期のリストのプラス記号とextend関数



この質問質問リストaに+記号を用いて追加された結果とextend関数を用いて追加された結果との差.

+,extend差異

a = [1, 2, 3]
a = a + [4,5]
print(a)
# [1, 2, 3, 4, 5]

a = [1, 2, 3]
a.extend([4,5])
print(a)
# [1, 2, 3, 4, 5]
差異
  • +を使用する場合、リストaの値は変化するのではなく、2つのリストに加算される새로운 리스트가 반환である.
  • extend使用리스트 a의 주소 값이 변하지 않고 유지됨
  • コードの2つの違いをもう一度見てみましょう.
    b = [1,2,3]
    print('original id:', id(b))
    b = b + [[4,5]]
    print('b:', b)
    print('+ id:', id(b))
    このコードを実行するときに、リンゴの値を結ぶ
    original id: 2359106440768
    b: [1, 2, 3, [4, 5]]
    + id: 2359106439872
    出てきました.元のidと+を使用すると、リストのidが変更されます.
    b = [1,2,3]
    print('original id:', id(b))
    b.extend([4,5])
    print('b:',b)
    print('extend id:', id(b))
    このコードを実行するときに、リンゴの値を結ぶ
    original id: 2359106440768
    b: [1, 2, 3, 4, 5]
    extend id: 2359106440768
    extendを使用すると、id値が同じであることがわかります.
    b = [1,2,3]
    print('original id:', id(b))
    b.append([4,5])
    print('b:',b)
    print('append id:', id(b))
    このコードを実行するときに、リンゴの値を結ぶ
    original id: 2359106439872
    b: [1, 2, 3, [4, 5]]
    append id: 2359106439872
    appendを使用する場合、extendと同様にid値は変更されません.すなわち、extend/appendは、新しいリストを返さずに元のリストに値を追加する.
    しかし、りんごの値は少し違います.b: [1, 2, 3, 4, 5] b: [1, 2, 3, [4, 5]]この2つの違いをさらに理解してみましょう.

    extend、append関数の違い

  • appendパラメータ自体を要素とする
  • extend一番外側のiterableを含む
  • もう一度簡単に説明すると、appendはパラメータとして受信した要素の値をリストに入れます.extendは一番外側のiterableのすべての項目を入れます.
    コードをもう一度見てみましょう.
    x = [1,2,3]
    y = 'ping'
    x.append(y)
    print('append:',x)
    
    x = [1,2,3]
    y = 'ping'
    x.extend(y)
    print('extend:',x)
    append: [1, 2, 3, 'ping']
    extend: [1, 2, 3, 'p', 'i', 'n', 'g']
    2つの欠落した値を比較すると、appendは「ping」文字列自体を挿入し、extendは最もオプションの外部のすべての項目をリストに挿入します.
    簡単に言えば、一番外側のケースを一つ一つリストに挿入することができます!
    ここでは、리스트에 +를 사용할 경우extendおよびappend関数を使用する場合について説明する.