1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python 2次元配列(数値)の数値を半角空白で区切ってprintする

Posted at

はじめに

競プロやブラウザでのプログラミング問題を解く場合、
演算結果をprintで出力することが多いと思います。

2次元配列の数値のリストを
空白区切りで出力をする必要が出た時に、
混乱したのでメモしておきます。

戒め。

やりたいこと

以下のような2次元配列を用意する。
2の出力を行います。

sample_list = []
for i in range(4):
    sub = []
    for j in range(5):
        sub.append((i*10)+j)
    sample_list.append(sub)
# 1. print(sample_list)の場合
[[0, 1, 2, 3, 4], [10, 11, 12, 13, 14], [20, 21, 22, 23, 24], [30, 31, 32, 33, 34]]

# 2. やりたい出力
0 1 2 3 4
10 11 12 13 14
20 21 22 23 24
30 31 32 33 34

実現方法

mapメソッドでリスト内の要素を文字に変換します。
それを再度listに入れ、
空白で区切って文字列にするためにjoinメソッドを使用します。

for i in range(H):
    print(' '.join(list(map(str,sample_list[i]))))
"""
出力
0 1 2 3 4
10 11 12 13 14
20 21 22 23 24
30 31 32 33 34
"""

おまけ

2次元配列をそのままmapで変換できないかと思い、試してみたのですが、
一つ下の次元に対してstrメソッドが適応されるようでした。

この仕様を初めて知ったので問題を解いている時に混乱してしまいました。
冷静に考えるとすぐ上記に記載した方法でできますね。

S = list(map(str,sample_list))
print(S)
print(' '.join(S[0]))
"""
['[0, 1, 2, 3, 4]', '[10, 11, 12, 13, 14]', '[20, 21, 22, 23, 24]', '[30, 31, 32, 33, 34]']
[ 0 ,   1 ,   2 ,   3 ,   4 ]
"""

おわりに

最終的に1次元ずつ変換することに落ち着いたのですが、
何次元あったとしても一気に変換する方法ないのでしょうか...?

1
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?