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]]
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.array
list
に戻る:
In [4]: A[:,:3].tolist()
Out[4]: [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
非常にまれにスライスオブジェクトを使用する方が、リスト内包表記を使用するよりも読みやすく、これはこれらのケースの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つの要素のリストを入手してください。
A = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]
print [a[:3] for a in A]
リスト内包表記の使用
次のようなリスト内包表記を使用できます。[x[0:i] for x in A]
ここで、i
は、必要な要素の数に基づいて1、2、3などです。
私はプログラミングの初心者であり、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])
どちらか:
>>> [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]]