-1

2000 を超える xyz 座標のリストがあり、最初の値が発生した直後に単一の値を繰り返したいだけです

[[-2000, 379, -1817]]

これ欲しい

[[-2000 379 -1817],
[-2000 379 -1817]]

しかし、リスト内の他の値ではなく、この値のみを繰り返します。

この値のインデックスは 716 です

4

5 に答える 5

0

スライスを使用します。たとえば、次のようにインデックス 1 の項目を繰り返したいとします。

>>> lis = [[1], [2], [3]]
>>> lis[1:2] = [lis[1][:] for _ in xrange(2)]
>>> lis
[[1], [2], [2], [3]]
>>> lis[1] is lis[2]  #both lists are different objects.
False

スライスを使用して、できるだけ多くのアイテムを挿入できます。

>>> lis = [[1], [2], [3]]
>>> lis[1:2] = [lis[1][:] for _ in xrange(4)]
>>> lis
[[1], [2], [2], [2], [2], [3]]

[:]リストの浅いコピーを返します。したがって、変更しlis[1]ても には影響しませんが、変更可能なオブジェクトも含まれている場合は を使用しlis[2]ます。lis[1]copy.deepcopy

新しいアイテムを元のオブジェクトへの単なる参照にしたい場合は、[:].


第二に、それが1つのアイテムだけの場合は、次も使用できますlist.insert:

>>> lis = [[1], [2], [3]]
>>> lis.insert(2, lis[1][:])
>>> lis
[[1], [2], [2], [3]]

ヘルプlist.insert:

insert(...)
    L.insert(index, object) -- insert object before index
于 2013-11-04T20:57:52.663 に答える
0

リストに要素を挿入する場合は、次のようにします。

まず、テスト リストを作成します。

>>> li=[list(t) for t in zip(*[iter(range(27))]*3)]
>>> li
[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11], [12, 13, 14], [15, 16, 17], [18, 19, 20], [21, 22, 23], [24, 25, 26]]

次に、次のように複製要素を挿入できます。

>>> li.insert(2,li[2])
>>> li
[[0, 1, 2], [3, 4, 5], [6, 7, 8], [6, 7, 8], [9, 10, 11], [12, 13, 14], [15, 16, 17], [18, 19, 20], [21, 22, 23], [24, 25, 26]]
                        ^^^^^^^
于 2013-11-04T21:02:52.623 に答える