web-dev-qa-db-ja.com

Pythonでリストのリストをスライスする

Pythonでリストのリストをスライスする必要があります。

A = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]
idx = slice(0,4)
B = A[:][idx]

上記のコードでは正しい出力が得られません。

私が欲しいのは:[[1,2,3],[1,2,3],[1,2,3]]

9
HuckleberryFinn

Numpyを使用すると、非常に簡単です。スライスを実行するだけです。

In [1]: import numpy as np

In [2]: A = np.array([[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]])

In [3]: A[:,:3]
Out[3]: 
array([[1, 2, 3],
       [1, 2, 3],
       [1, 2, 3]])

もちろん、numpy.arraylistに戻る:

In [4]: A[:,:3].tolist()
Out[4]: [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
13
awesoon

非常にまれにスライスオブジェクトを使用する方が、リスト内包表記を使用するよりも読みやすく、これはこれらのケースの1つではありません。

>>> A = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]
>>> [sublist[:3] for sublist in A]
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

これは非常に明確です。 Aのすべてのサブリストについて、最初の4つの要素のリストを入手してください。

10
timgeb
A = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]

print [a[:3] for a in A]

リスト内包表記の使用

1
Rahul Kumar

次のようなリスト内包表記を使用できます。[x[0:i] for x in A]ここで、iは、必要な要素の数に基づいて1、2、3などです。

1
Sid

私はプログラミングの初心者であり、Pythonは私の第一言語です。学習を開始するのはたったの4〜5日です。リストとスライスについて学び、いくつかの例を探しました。問題が見つかり、試してみましたそれを解決するために私のコードが正しいかどうか親切に感謝してくださいこれが私のコードです A = [[1,2,3,4,5]、[1,2,3,4,5]、[ 1,2,3,4,5]] print(A [0] [0:3]、A [1] [0:3]、A [1] [0:3])

0

どちらか:

>>> [a[slice(0,3)] for a in A]
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

または:

>>> [list(filter(lambda x: x<=3, a)) for a in A]
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
0
Haifeng Zhang