プログラミングコンテストでは、リスト(配列)に対して色々な操作を行い、
答えとしてそのリストそのものではなく、リストの要素を一行にならべて出力(一括出力)
することが求められる場合が多々あります。
そこで今回はpython3 で、
一次元配列の要素を一括して出力する2つの方法、アンパックと .join( ) を紹介します。
また、それよりも多少速度は遅くなるらしいのですが、超絶簡単な表記ができるアンパックと呼ばれる方法も紹介します。
アンパックを用いる方法
アンパックと呼ばれる方法で、リストを一括出力することはとても簡単です。
出力したいリストの前に*(アスタリスク)を付け加えてprint( )するだけです。
それでは実施のコードをみてみます。
mylist1 = ['a', 'b', 'c', 'd', 'e']
print(*mylist1)
# --> a b c d e
mylist2 = [0, 1, 2, 3, 4]
print(*mylist2)
# --> 0 1 2 3 4
mylist1 と mylist2 を例示しており、その違いは要素の型が str か int かです。
どちらも、同じ操作(リストの前にアスタリスクを付ける)で出力できています。
ここで注意点は、出力されたものは、要素間に半角スペースが挿入されている事です。
ときには、要素間に何もなく、くっつけて出力したい場合もあるかと思います。
例えば上記の mylist1 に対して abcde と出力したい場合などです。
その場合は、以下のように sep という引数を指定すれば良いです。
mylist1 = ['a', 'b', 'c', 'd', 'e']
print(*mylist1, sep="")
# --> abcde
以上により、簡単にpython3 のリストを一括して出力することができます。
また、もう一つの方法を以下で紹介します。
以下の方法は、アンパックでの方法よりも高速に実行できるらしいのですが、
リストの一括出力を求められるような問題では、あまり出力時の速度を気にする必要はないと思われるので、
参考程度で良いかと思います。
.join( ) を用いる方法
以下のように、.join( )を使えば、要素を一括して出力させる事ができます。
#(1)要素が文字列の場合
mylist1 = ['a', 'b', 'c', 'd', 'e']
print(''.join(mylist1))
# --> abcde
#(2)要素が数値の場合
mylist2 = [0, 1, 2, 3, 4]
print(''.join(map(str, mylist2)))
(1)と(2)で分けて書いていますが、今回の方法では、リストの要素が文字列の場合と数値の場合で異なる記述が必要だからです。
.join( ) は文字列に対して行う操作であり、(1)の例が(要素が文字列であるため)基本的な操作となります。
詳しくみていくとprint分の括弧内に、”.join(mylist1) と記述しています。
まず、 mylist1 は対象とするリストを引数として与えています。
次に、 .join の前にある ” は、mylist1 の要素を連結する際に、任意の区切り文字を与える部分です。 この例では、 ” の間に何も入れていないので、区切り文字は無しとなり、要素はそのままくっついて出力されています。
たとえば、コンマで区切りたい場合は 以下の様に、” の間にコンマを入れてやれば良いです。
print(','.join(mylist1))
# --> a,b,c,d,e
次に、(2) の例のように、要素が数値の場合はそのまま(1) と同じようにすると、
TypeError: sequence item 0: expected str instance, int found
のように、「str が欲しいのに、int がきたよ」という感じで怒られます。
以上python3 で、リストを一括出力する2つの方法を紹介しました。
お役に立てればうれしいです。