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

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

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

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

3回答

2949閲覧

2次元のリストを1次元のリストに展開する方法

hsgwa

総合スコア7

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2016/07/20 02:08

編集2016/07/20 02:14

シミュレーションに使うパラメータをpythonでヘッダーありのcsvに吐き出すプログラムを作っています.
具体的には

a = [1, 2] b = [3, 4]

から

a, b 1, 3 1, 4 2, 3 2, 4

というcsvを生成したいのですが,2次元リストを展開して戻り値にするときに文法エラーになってしまいました.
何か良い方法はありますでしょうか.

###発生している問題・エラーメッセージ

SyntaxError: invalid syntax

###該当のソースコード

def csvData(dataSet): import itertools data = [[] for i in range(len(dataSet))] for record in list(itertools.product(*dataSet)): for column in range(len(dataSet)): data[column].append(record[column]) return *data if __name__ == "__main__": import sys import pandas as pd a = [1, 2] b = [3, 4] a, b = csvData([a, b]) df = pd.DataFrame({'a':a, 'b':b}) df.to_csv('param.csv')

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

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

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

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

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

guest

回答3

0

ベストアンサー

itertoolsモジュールのproduct関数を使って、
2つのリストの組み合わせ(直積)を作るのが簡単かと思います。

lang

1from itertools import product 2 3a = [1, 2] 4b = [3, 4] 5 6print(list(product(a, b))) 7# => [(1, 3), (1, 4), (2, 3), (2, 4)] 8 9 10# CSV 11print("a, b") 12for x in product(a, b): 13 print("%d, %d" % x) 14 15# a, b 16# 1, 3 17# 1, 4 18# 2, 3 19# 2, 4

投稿2016/07/20 04:01

argius

総合スコア9388

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

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

hsgwa

2016/07/20 04:44

コメントありがとうございます. 考えてみればpandas使う必要なかったんですね. シンプルな回答ありがとうございました.
guest

0

参考情報

...
product(A, B) は ((x,y) for x in A for y in B) と同じものを返します。
...

投稿2016/07/20 12:06

katoy

総合スコア22324

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

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

hsgwa

2016/07/20 23:35

参考情報ありがとうございます.お陰様でだいぶスッキリしました. コメントありがとうございました.
guest

0

ヘッダーはつけてないので適当にどうぞ

python2

1a = [1,2] 2b = [3,4] 3 4z = "\n".join([", ".join( ( str(x), str(y) ) ) for x in a for y in b]) 5 6print z

投稿2016/07/20 03:31

ozwk

総合スコア13521

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

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

hsgwa

2016/07/20 04:49

コメントありがとうございます 一行だけで解決することだったんですね. 非常に参考になりました.ありがとうございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問