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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

4回答

16827閲覧

Python 行列の出力 二次元配列

torano

総合スコア92

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2016/07/02 08:39

Python3を使用しています。

n*mの行列Aがあり、以下のように二次元配列に格納されています。
A = [[a11,a12,...,a1m],[a21,a22,...,a2m],...,[an1,an2,...,anm]]

この配列を空白区切で出力したいです。以下に例を示します。

A = [[1,2,3],[4,5,6],[7,8,9]]

出力
1 2 3
4 5 6
7 8 9

このプログラムは簡単に書くと以下のようになると思うのですが、ループを使わずに(リスト内包などで)書く方法がありましたら教えて欲しいです。よろしくお願いします。

for i in A: print(*i)

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

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

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

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

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

guest

回答4

0

ベストアンサー

行列でしたら、numpyを使うと拡張性を有りき、で書けるかな、と思いついたので私の記述を残しておきます。ただ、シンプルに収めるというより、n*mの行列に対応させることを目的にやってますので、ちょっと長めです。

コードは下記の通りです。

python

1import numpy as np 2import StringIO 3 4A = [[1,2,3], [4,5,6], [7,8,9]] 5 6output = StringIO.StringIO() 7np.savetxt(output, A, delimiter=" ", fmt="%d") 8 9print(output.getvalue())

出力

1 2 3 4 5 6 7 8 9

numpyのsavetxtメソッドの引数のdelimiterfmtでいろいろと調整できると思います。

このやり方に似たものがStackOverflowに転がっていたので、参考に載せておきます。

他にも、データの整然化でしたら、pprintも有ります。

これらのパッケージと、今回のようにStringIOと合わせて使うと、リストのカッコ表記などを正規表現などを使わずうまく消せるかもしれません。

ご参考程度に。

投稿2016/07/02 09:37

Gazelle

総合スコア136

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

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

torano

2016/07/09 01:31

ありがとうございます。一番詳しかったのでベストアンサーにさせていただきました〜
guest

0

calc.py

python3

1import sys 2import numpy as np 3 4kuku = [[v * h for h in range(1, 10) ] for v in range(1, 10)] 5 6print("") 7np.savetxt(sys.stdout.buffer, kuku, delimiter="", fmt="%3d")

実行例
イメージ説明

参考情報

  • Python 行列の出力 二次元配列

https://teratail.com/questions/39868

  • numpy.savetxtで標準出力

https://qiita.com/knucklethrow/items/b4bbe8b4a0a778d1fb10

投稿2018/09/01 14:38

katoy

総合スコア22324

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

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

0

面白がってやってみたら、こんな感じになりました。

A = [[1,2,3],[4,5,6],[7,8,9]] print('\n'.join(' '.join([str(j) for j in i]) for i in A))

※要素が2桁以上の数値になったときとかは考慮してないです

投稿2016/07/02 09:04

attakei

総合スコア2738

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

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

0

print("\n".join([" ".join(map(str, l)) for l in A]))

これでどうでしょう?
あまり見やすくないので、for文で素直に書いた方が良いと思います。

投稿2016/07/02 09:04

Noriyuki

総合スコア39

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問