リストの最後の N 要素を削除するより良い方法はありますか?
for i in range(0,n):
lst.pop( )
のために働くn >= 1
>>> L = [1,2,3, 4, 5]
>>> n=2
>>> del L[-n:]
>>> L
[1, 2, 3]
最後の n 要素を削除する場合、つまり、最初の len - n 要素を保持します。
lst = lst[:len(lst)-n]
注: これはメモリ内操作ではありません。浅いコピーが作成されます。
これは、存在が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]
これは、ベクトルのエッジをトリミングする関数内で、何もカットしない可能性を残したい場合などに役立ちます。