1

重複の可能性:
Pythonの「驚き最小の原則」:変更可能なデフォルト引数Python-
乗算演算子を使用してリスト内のオブジェクトのコピーを作成する

別のリストにあるリストに追加すると、Pythonは予期しない動作をします。次に例を示します。

>>> _list = [[]] * 7
>>> _list
[[], [], [], [], [], [], []]
>>> _list[0].append("value")

私が期待すること:

>>> _list
[['value'], [], [], [], [], [], []]

私が得るもの:

>>> _list
[['value'], ['value'], ['value'], ['value'], ['value'], ['value'], ['value']]

どうしてこれなの?どうすればそれを回避できますか?

4

1 に答える 1

4

問題は、リストに7つの独立したリストが含まれておらず、同じリストが7回含まれていることです。

リストのリストを作成するには、リスト内包表記を使用することをお勧めします。

_list = [[] for _ in xrange(7)]

これにより、7つの異なるリストを含むリストが作成されます。

于 2012-12-07T12:34:20.090 に答える