1

Python でサブリストをリストに追加する方法を理解しようとしています。たとえば、以前使用していたコードは次のとおりです。

pop = [[],[],[],[],[],[],[],[],[],[]]

しかし、ポップ配列の長さにユーザー入力を追加したい、つまり. 追加されるアレイの数。他のいくつかのスタックオーバーフローの質問を見てきましたが、そのうちのいくつかは次のようなものを提案しました:

popLen = 5
pop = [None]*popLen

しかし、試してみると、空の配列ではなく、5 つの None 要素を持つリストが作成されます。私はもう試した:

pop = [[]]*popLen

サブリストへの適切な方法は何ですか?

4

2 に答える 2

4

pop = [[]]*popLen動作するはずですが、同じネストされたリスト時間で満たされたリストを作成するためpopLen、リスト要素の1つへの変更が他のリスト要素に表示されるため、おそらくあなたが望むものではありません:

>>> a = [[]] * 3
>>> a[0].append(42)
>>> a
[[42], [42], [42]]

より良い代替手段は

pop = [[] for _ in range(popLen)]  # use xrange() in Python 2.x

これにより、この問題が解消されます。

>>> a = [[] for _ in range(3)]
>>> a[0].append(42)
>>> a
[[42], [], []]
于 2013-09-01T19:55:15.920 に答える
3

できるよ:

pop = [[] for x in range(popLen)]

乗算しようとしないでください[[]]。実際には機能しますが、予想とは異なる結果になります (同じリストのコピーが作成されるため、それらを個別に変更することはできません)。

于 2013-09-01T19:55:56.820 に答える