今回は python を使用してると出てくる変数の後ろに出てくるカンマ(,)について詳しく書いていきたいと思います。まず、筆者の自己紹介をしたいと思います。

筆者について (about me)

私は普段、理系大学生をしており、物理を専攻しております。その中で大学2年生のときに python に触れ、その面白さに魅了されました。その後は主に python を使った deep learning を趣味として始め、様々な開発を行っております。その際にでたエラーなどの解決方法をこの What’s this ブログで詳しく解説しています。

変数 (Variable) の後ろのカンマについて

早速変数の後ろのカンマについて説明しようと思います。結論から申し上げると、変数の後ろのカンマは

リストや、str 型などの1つ目しか表現できない変数です。

このことについて具体例と一緒に理解を深めていきたいと思います。

W, = [1]
print(W,)

上のコードを実行すると結果は、1となります。

1

これは当たり前と思われるかもしれませんが、カンマなしのコードを実行すると

W =[1]
print(W)
[1]

[1] となります。この違いは、W はリストを W という変数に対して代入するのに対しW, はリストの1つ目の数値を代入する変数という違いがあります。この違いが顕著に現れるのが、W, に二次元の値を代入したときです。実際にコードを書いてみましょう。

まず、W という変数に通常通りリストを代入していきます。

W = [1,3,4]
print(W)

この結果は

[1,3,4]

という通常の結果を示します。一方、カンマありの W, は

W, = [1,3,4]
print(W,)

と入力すると

ValueError: too many values to unpack (expected 1)

というエラーが起きてしまいます。エラーを読むと値が多すぎるとなっており、1つの値しか予期していないため、2つ以上の値が入力されるとこの様なエラーが起きてしまいます。

ではこの[1,3,4]を表すにはどのようにしたら良いのでしょうか。

答えは、リストの中にリストを作ることです。

具体例を見てみましょう。

W, = [[1,3,4]]
print(W,)

このコードを実行すると

[1, 3, 4]

と表現することができました!!

このようにリストを二重にすると [1,3,4] はリストの1つ目ということになるため、1つ目しか表さない W, でもリストで表現することができました。

なぜカンマありの変数が必要なのか。 

最後にこのカンマありの変数の必要性について述べたいと思います。今回紹介したカンマありの変数は、ズバリ、機械学習の時に有用となります。機械学習では、1つ目のリストや int 型の数値を学習データとしたり、教師あり学習では答えとしたりと、何かと1つ目のリストや int 型が大事になってきます。そのため、この W, という変数は機械学習の時に非常に有用となります。

詳しくは下の本を参考にすると W, がよく出るのに加えて、機械学習について学びが深まると思いますので、ぜひ参考にしてみてください。

https://www.oreilly.co.jp/books/9784873118369/