Pythonで行列(ネストされたリスト)を文字列に変換する方法
Pythonで行列(リストの中にリストが入ったネスト構造のデータ)を1つの文字列に変換したい場合は、シンプルなリスト内包表記とjoinメソッドを組み合わせることで、わずか数行のコードで実現できます。
サンプルコード
以下は、実際に動作するサンプルプログラムです。
my_list = [[1, 22, "python"], [22, "is", 1], ["great", 1, 91]]
print("The list is :")
print(my_list)
my_list_1, my_list_2 = ",", " "
my_result = my_list_2.join([my_list_1.join([str(elem) for elem in sub]) for sub in my_list])
print("The result is :")
print(my_result)
実行結果
The list is : [[1, 22, 'python'], [22, 'is', 1], ['great', 1, 91]] The result is : 1,22,python 22,is,1 great,1,91
コードの解説
まず、複数のリストを含む入れ子構造(ネストされたリスト)を定義し、その内容をコンソールに表示します。
次に、2つの変数を用意し、一方にはカンマ「,」を、もう一方には半角スペースを代入します。これらが要素を連結する際の区切り文字として機能します。
内側のリスト内包表記
[str(elem) for elem in sub]により、各サブリストの要素をすべて文字列型に変換し、カンマで連結します。外側のリスト内包表記では、この処理をすべてのサブリストに対して適用し、得られた各行の文字列を今度はスペースで連結します。
最終的な結果が変数
my_resultに代入され、コンソールに出力されます。
ポイント
joinメソッドは文字列のみを受け付けるため、数値などの要素が含まれる場合は str() 関数で明示的に文字列へ変換する必要があります。この2段階の連結処理により、「要素間はカンマ」「行間はスペース」という整形された文字列を手軽に生成できるのがこの手法の大きな利点です。CSV形式への変換やログ出力など、さまざまな場面で応用できます。
-
Pythonで文字列を単語のリストに変換する方法
文字列を単語のリストに変換したい場合は、空白文字を基準に文字列を分割するだけで実現できます。最もシンプルな方法は、文字列クラスが標準で提供している split() メソッドを使うことです。このメソッドのデフォルトの区切り文字は空白であり、文字列に対して呼び出すと、空白文字の位置で自動的に分割してくれます。split()メソッドを使う方法引数を指定せずに split() を呼び出すだけで、連続する空白もまとめて処理され、単語ごとのリストが返されます。コード例>>> Please split this string.split() [Please, split, this, st
-
Pythonでリストの文字列表現をリストに変換する方法【ast.literal_evalの使い方】
Pythonでは、[apple, orange, banana] のように文字列として表現されたリストを、実際のリストオブジェクトへ変換したい場面があります。そんなときに便利なのが、標準ライブラリの ast.literal_eval() です。 ast.literal_eval()とは ast.literal_eval() は、文字列をPythonの式として安全に評価するための関数です。任意のコードを実行してしまう危険性がある eval() と異なり、評価できるのは文字列・数値・タプル・リスト・辞書・ブール値(True / False)、そして None といったPythonのリテラル構造のみ