16

重複の可能性:
Python の append() とリストの + 演算子、これらの結果が異なるのはなぜですか?

Pythonでのリスト操作の「+」と「追加」の実際の違いは何ですか?

4

5 に答える 5

26

2 つの大きな違いがあります。1つ目は、それ+はより意味が近いということextendですappend:

>>> a = [1, 2, 3]
>>> a + 4
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    a + 4
TypeError: can only concatenate list (not "int") to list
>>> a + [4]
[1, 2, 3, 4]
>>> a.append([4])
>>> a
[1, 2, 3, [4]]
>>> a.extend([4])
>>> a
[1, 2, 3, [4], 4]

もう1つのより顕著な違いは、メソッドがインプレースで機能することextendです。実際に+=は、とまったく同じ動作+=をしますが、イテラブルを受け入れることができますが、+=別のリストしか取得できません。

于 2012-06-24T12:51:33.167 に答える
18

を使用list.appendすると、その場でリストが変更されます。その結果はNoneです。+ を使用すると、新しいリストが作成されます。

于 2012-06-24T12:48:14.640 に答える
4
>>> L1 = [1,2,3]
>>> L2 = [97,98,99]
>>>
>>> # Mutate L1 by appending more values:
>>> L1.append(4)
>>> L1
[1, 2, 3, 4]
>>>
>>> # Create a new list by adding L1 and L2 together
>>> L1 + L2
[1, 2, 3, 4, 97, 98, 99]
>>> # L1 and L2 are unchanged
>>> L1
[1, 2, 3, 4]
>>> L2
[97, 98, 99]
>>>
>>> # Mutate L2 by adding new values to it:
>>> L2 += [999]
>>> L2
[97, 98, 99, 999]
于 2012-06-24T12:49:43.143 に答える
0

この +操作により、配列要素が元の配列に追加されます。この array.append操作により、配列 (または任意のオブジェクト) が元の配列の末尾に挿入されます。

[1, 2, 3] + [4, 5, 6] // [1, 2, 3, 4, 5, 6]

b = [1, 2, 3]
b.append([4, 5, 6]) // [1, 2, 3, [4, 5, 6]]

ここを見てください: Python の append() とリストの + 演算子、なぜこれらは異なる結果をもたらすのですか?

于 2012-06-24T12:48:05.593 に答える
0

+2 つのオペランド リストを連結して新しいリストを生成する二項演算子です。append単一の要素を既存のリストに追加するインスタンス メソッドです。

PS ということextendですか?

于 2012-06-24T12:48:35.190 に答える