1

と呼ばれるリストの単純なリストがありますsquare

square = [[1,2,3],[4,5,6],[7,8,9]]

私の目標は、9 つ​​の要素のそれぞれを繰り返し処理し、その要素の行と列のすべての値を同時に取得することです。この例では、最初の繰り返し (要素 1 の場合) は[1,2,3]andを返し[1,4,7]、2 回目 (要素 2 の場合) は[1,2,3]and[2,5,8]などを返します。次のコードは機能します。

for r in range(3):
    for c in range(3):
        row = square[r]
        col = [square[c1][c] for c1 in range(3)]

しかし、これを行うためにベースPythonを使用する別の方法はありますか?

を使用してリストを転置および反復できますfor c in zip(*square):。これは、列が一度だけ必要な場合に機能しますが、行列の転置と行列自体を格納せずに、配列スライシングを使用して列にインデックスを付ける方法はありませんか?

残念ながら、numpy のようなライブラリは、最初にコード レビュー プロセスを経る必要があるため、現時点ではオプションではありません。これには長い時間がかかります (約 6 か月...)。ポリシーを作成したり、手順を設計したりしたわけではありませんが、この機関で取り組む必要のあるポリシーです。すでに numpy のリクエストを提出しましたが、当面は基本 Python のみを使用しています。

4

2 に答える 2

4

numpy の使用

>>> import numpy as np
>>> square = np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> square[0]
array([1, 2, 3])
>>> square[..., 0]
array([1, 4, 7])
>>> square[:, 0]
array([1, 4, 7])

Python だけを使用する

>>> square = [[1,2,3],[4,5,6],[7,8,9]]
>>> square[0]
[1, 2, 3]
>>> zip(*square)[0]
(1, 4, 7)
于 2013-04-23T21:57:46.013 に答える