web-dev-qa-db-ja.com

pythonでリストをネストされたリストに変える

可能性のある複製:
リストをPythonで配列に変換するにはどうすればよいですか?

次のようなリストをどのように変換できますか?

data_list = [0,1,2,3,4,5,6,7,8]

次のようなリストのリストに:

new_list = [ [0,1,2] , [3,4,5] , [6,7,8] ]

つまり、リスト内の順序付けられた要素をグループ化して、順序付けられたリストに保持したいと考えています。これどうやってするの?

ありがとう

17
Double AA

これは、data_listの長さが3の倍数であることを前提としています。

i=0
new_list=[]
while i<len(data_list):
  new_list.append(data_list[i:i+3])
  i+=3
14
Graham

これにより、3つの要素が出現順にグループ化されます。

new_list = [data_list[i:i+3] for i in range(0, len(data_list), 3)]

希望しない場合は、より良い例を挙げてください。

50
jsbueno

何かのようなもの:

map (lambda x: data_list[3*x:(x+1)*3], range (3))
5
Hyperboreus

new_list = [data_list[x:x+3] for x in range(0, len(data_list) - 2, 3)]

勝利のための理解度をリストアップ:)

3
ba__friend

Fred Fooからの回答 に基づいて、すでにnumpyを使用している場合は、 reshape を使用して、データのコピー:

import numpy
new_list = numpy.array(data_list).reshape(-1, 3)
1
Cœur

元のリストから何らかの選択基準がありますか?

Pythonではこれを行うことができます:

new_list = []
new_list.append(data_list[:3])
new_list.append(data_list[3:6])
new_list.append(data_list[6:])

print new_list
# Output:  [ [0,1,2] , [3,4,5] , [6,7,8] ]
0
Manny D