2

スライス表記を使用してリストの開始と終了のみを取得する方法はありますか?

たとえば、最初から 10 アイテム、最後から 10 アイテム?

4

2 に答える 2

4

直接ではありませんが、スライスと連結を一緒に使用するのは非常に簡単です。

>>> a = list(range(100))
>>> a[:10] + a[-10:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

もちろん、リスト内の項目が 20 未満の場合は、重複した値が得られます。

>>> a = list(range(15))
>>> a[:10] + a[-10:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

…しかし、あなたは文字通りあなたが求めていたものを手に入れています: 最初から 10 アイテム、最後から 10 アイテム。何か違うものが必要な場合は実行可能ですが、必要なものを正確に定義する必要があります。

于 2013-08-20T00:30:46.293 に答える
3

途中の項目を空のリストに置き換えることができます

>>> a = list(range(100))
>>> a[10:-10] = []
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

このようにすると重複は発生せず、十分なアイテムがない場合はリスト全体が表示されます

>>> a = list(range(15))
>>> a[10:-10] = []
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

@abarnertの場合でも正常に機能します

>>> a = list(range(3))
>>> a[10:-10] = []
>>> a
[0, 1, 2]
于 2013-08-20T00:45:32.893 に答える