私はリストのリストを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]]
私はリストのリストを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]]
、それは非常に簡単です - あなただけのスライスを行うことができます:
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]])
あなたは、もちろん、バックlist
からnumpy.array
を変換することができます:
In [4]: A[:,:3].tolist()
Out[4]: [[1, 2, 3], [1, 2, 3], [1, 2, 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]]
に変更するように修正* OPの問題を解決している間、私はそれが何のために起こったのか疑う。 –
@WayneWerner更新plzを参照してください:) – haifzhan
非常にまれスライスオブジェクトを使用していないと、リスト内包表記を採用するよりも読みやすい、そしてこれは、これらの例ではありません。
>>> 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つの要素のリストを私に教えてください。 numpyので
あなたの質問で使用されていますか?また、 'slice(0,4)'はなぜうまくいけばサブリストごとに3つの要素を与えるのでしょうか? –