質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

3回答

804閲覧

リストをN個に分割したい

Vlang

総合スコア10

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/06/30 06:19

Python3

1list = ['あめ','あいす','ちょこ','くっきー','どーなつ','りんご','ばなな'] 2#listを4つに分けてprintしたい 3 4#ここでなんらかの処理をする 5 6print(list1) 7#list1⇒['あめ','あいす'] 8 9print(list2) 10#list2⇒['ちょこ','くっきー'] 11 12print(list3) 13#list3⇒['どーなつ','りんご'] 14 15print(list4) 16#list4⇒['ばなな'] 17 18 19 20**なお、順番はバラバラでよい** 21 22

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

numpyを使う場合

もしnumpyを使える環境である場合は、 numpy.array_split を使うのが楽だと思います。
https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.array_split.html

python

1import numpy as np 2 3N = 4 4l = ['あめ','あいす','ちょこ','くっきー','どーなつ','りんご','ばなな'] 5 6groups = np.array_split(l, N) 7 8for group in groups: 9 print(group)

numpyを使わない場合

以下のように書くと、順番を保ったままグループ分けをすることができます。

python

1N = 4 2l = ['あめ','あいす','ちょこ','くっきー','どーなつ','りんご','ばなな'] 3 4max_size = len(l) // N + 1 5 6for i in range(N): 7 print(l[i * max_size:(i + 1) * max_size])

その他

順番をランダムにしたい

もし順番をバラバラにしたい場合は、以下のような処理を挟むといいと思います。

python

1import random 2random.shuffle(l)

リストの名前について

本質問とは関係ありませんが、

python

1list = ['あめ','あいす','ちょこ','くっきー','どーなつ','りんご','ばなな']

と書いてしまうと、Pythonの組み込み型 list を上書きしてしまうため、変数名には list は使わないようにしたほうが適切です。

投稿2019/06/30 07:03

r_takahama

総合スコア106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

python

1def split_array(array, n): 2 """ 配列をn個の部分配列に分割 3 """ 4 5 m = len(array) // n # 部分配列1個あたりの個数 6 k = len(array) % n # 余ったk個は最初の方の部分配列に入れる 7 8 subarrays = [] 9 j = 0 10 for i in range(n): 11 if i < k: 12 subarray = array[j:j+m+1] 13 j += m+1 14 else: 15 subarray = array[j:j+m] 16 j += m 17 subarrays.append(subarray) 18 return subarrays 19 20 21list1, list2, list3, list4 = split_array(['あめ','あいす','ちょこ','くっきー','どーなつ','りんご','ばなな'], 4)

ちなみに、 list はグローバルで定義された型の名前と衝突するするので、変数名に使わない方がいいです。

投稿2019/06/30 06:55

nunukim

総合スコア135

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

more_itertools.devideあたりが使えそうです。

投稿2019/06/30 06:51

LouiS0616

総合スコア35676

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問