2016-06-17 3 views
1

私は約250個の要素からなる大きなリストを持っています。 50個の要素をすべてサブリストにグループ化し、各サブリストを繰り返し処理する必要があります。例えば大きなリストのすべてのN個のアイテムのリストを返すPythonicの方法

:その後、私はサブリストを反復処理し、それらのそれぞれのために何かをすることができるようになります

subLists = [[0, 1, ... ..., 49], [50, 51, ... ..., 99], ... ..., [250, 251, ... ..., 268]] 

largerList = [0, 1, ... ..., 268] 

私は、サブリストが見えるようにしたいです。

for ls in subLists: 
    for i in ls: 
    DO SOMETHING... 

答えて

6

リストの理解度を使用して、Pythonの方法でこれを行うことができます。

def group(original_list,n=50): 

    return [original_list[x:x+n] for x in xrange(0,len(original_list),n)] 

は、あなたが実際にすべてで、この機能は必要ありませんが、私はあなたが各サブリスト内の項目の数を変更したい場合には機能的な方法を示したい考え出し:下記を参照してください。これは、同じようにうまく機能:

[original_list[x:x+50] for x in xrange(0,len(original_list),50)] 
0
count = len(largerList)/50 
i = 0 
smallerList = [] 
while(i < count): 
    smallerList.append(largerList[(i*50):(i*50)+50]) 
    i+= 1 
+0

を記述します。 – gobrewers14

1

itertoolsドキュメント(GROUPBYない)でgrouper例を参照してください - あなたが望むもののように聞こえる:このソリューションが役に立つかもしれません働く理由

def grouper(iterable, n, fillvalue=None): 
    "Collect data into fixed-length chunks or blocks" 
    # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx" 
    args = [iter(iterable)] * n 
    return zip_longest(*args, fillvalue=fillvalue) 
+0

非常に大きなリストの場合、grouperの呼び出しが良い。しかし、OPが何を記述しているのかというと、ライブラリをインポートするには重すぎるかもしれません。 –

関連する問題