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

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

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

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

Q&A

解決済

4回答

1069閲覧

リストのそれぞれの要素を空のリストに追加する

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

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

0グッド

0クリップ

投稿2018/03/09 03:10

データとして
['1','2','3','4','5','6','7','8']
['2','5','7','8','1','4','6','3']
['7','9','3','5','7','8','1','2']
['5','4','3','4','5','6','7','4']
['0','9','3','4','4','7','2','8']
...

とあった時に
要素(0~7)をそれぞれ空のリストに入れていくのはどのようにすれば良いでしょうか?

実行結果は
['1','2','7','5','0'] #要素0をリスト化
['2','5','9','4','9'] #要素1をリスト化
['3','7','3','3','3'] #要素2をリスト化
...

という感じです。

自分は1つ1つの要素に対してはできるのですが、実行結果として全てを同時にアウトプットすることができません。
ちなみに自分が行ったのは、空のリストを指定し、そこへデータのリスト(0~9)を追加していくというものです。スクリプトの数字を変えて入出力しているので、データリストの要素が100を超えてしまうと、手がつけられないと思いました。
for文でやれば良いと思うのですが、空のリストをどう指定して良いか分かりません。

また他の方法もあれば教えていただきたいと思います。

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

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

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

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

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

guest

回答4

0

Numpyというライブラリを使用すると楽だと思います。

Python

1import numpy as np 2 3# リストのリストと仮定します 4l = [['1','2','3','4','5','6','7','8'], 5 ['2','5','7','8','1','4','6','3'], 6 ['7','9','3','5','7','8','1','2'], 7 ['5','4','3','4','5','6','7','4'], 8 ['0','9','3','4','4','7','2','8']] 9 10# 行列に変換します 11array = np.array(l) 12 13# 転置行列 14print(array.T)

投稿2018/03/09 03:30

micheleno13

総合スコア54

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

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

退会済みユーザー

退会済みユーザー

2018/03/09 04:10

micheleno13 様 回答ありがとうございます。 とてもわかりやすいです。
guest

0

zip関数でいかがでしょう。

Python

1a = ['1','2','3','4','5','6','7','8'] 2b = ['2','5','7','8','1','4','6','3'] 3c = ['7','9','3','5','7','8','1','2'] 4 5for(l in zip(a,b,c) ): 6 print(l) 7 8>>> ('1', '2', '7') 9('2', '5', '9') 10以下略

タプルで帰ってきますけど、リストにしてやるのは簡単かと思います。

投稿2018/03/09 03:50

kazto

総合スコア7196

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

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

退会済みユーザー

退会済みユーザー

2018/03/09 04:13

kazto 様 ありがとうございます。 zip関数を使ってみます。
guest

0

アスタリスク*を使うと二重になっているリストを分解できます。これをzipでまとめればいいかな。

Python

1x =[[1,2,3], [4,5,6], [7,8,9]] 2print(x) 3 4# y = [list(items) for items in zip(*x)] # 下の三行と同じ結果 5y = [] 6for items in zip(*x): 7 y.append(list(items)) 8 9print(y)

投稿2018/03/09 03:48

編集2018/03/09 03:59
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/03/09 04:12

dkato0077 様 ありがとうございます。 アスタリスクの使い方が分かりました。
guest

0

ベストアンサー

二重リストのまま扱ってよければlist(map(list, zip(*l)))と簡潔に記述できます。
参考:Transpose list of lists

Python

1l = [['1','2','3','4','5','6','7','8'], 2 ['2','5','7','8','1','4','6','3'], 3 ['7','9','3','5','7','8','1','2'], 4 ['5','4','3','4','5','6','7','4'], 5 ['0','9','3','4','4','7','2','8']] 6l = list(map(list, zip(*l))) 7print(l) 8""" 9[['1', '2', '7', '5', '0'], ['2', '5', '9', '4', '9'], ['3', '7', '3', '3', '3'], ['4', '8', '5', '4', '4'], ['5', '1', '7', '5', '4'], ['6', '4', '8', '6', '7'], ['7', '6', '1', '7', '2'], ['8', '3', '2', '4', '8']] 10"""

投稿2018/03/09 04:24

can110

総合スコア38266

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問