64

リストの最後の N 要素を削除するより良い方法はありますか?

for i in range(0,n):
    lst.pop( )
4

7 に答える 7

107

のために働くn >= 1

>>> L = [1,2,3, 4, 5]
>>> n=2
>>> del L[-n:]
>>> L
[1, 2, 3]
于 2013-03-30T06:59:12.340 に答える
45

最後の n 要素を削除する場合、つまり、最初の len - n 要素を保持します。

lst = lst[:len(lst)-n]

注: これはメモリ内操作ではありません。浅いコピーが作成されます。

于 2013-03-30T06:59:38.197 に答える
1

これは、存在がpythonicうまく機能せず、隠れたバグや混乱を引き起こす可能性があるケースの 1 つです。n=0 の場合、上記の解決策はどれも機能しません。使用l[:len(l)-n]は一般的なケースで機能します:

l=range(4)
for n in [2,1,0]: #test values for numbers of points to cut
    print n,l[:len(l)-n]

これは、ベクトルのエッジをトリミングする関数内で、何もカットしない可能性を残したい場合などに役立ちます。

于 2016-03-26T23:03:44.970 に答える