KDP(Kindle Diect Publishing)による拙著『VBAユーザーのためのPython超入門』の「7-4. 文字列から1文字ずつ取得する」で、文字列から1文字ずつ出力する以下のようなPythonのコードをご紹介しています。
txt = 'abcde' for i in txt: print(i)
同様の処理をVBAで行うより、簡単なコードで済むことが良くわかる例です。
for文で1文字ずつのリストを作成する
VBAで1文字ずつの配列を作る処理をご存知なら、拙著「8-7. リストのさまざまな操作」でもご紹介しているリストに用意されているappendメソッドと、先ほどのfor文を組み合わせて以下のようなコードが書けるのではないかと思います。
arr = []
for i in txt:
arr.append(i)
中身が空のリストを作成しておいて、
arr = []
for文の中で1文字ずつ順番にリストに追加しています。
for i in txt:
arr.append(i)
VBAで1文字ずつの配列を作成する場合
VBAで同様の処理を行う場合、
Dim txt As String txt = "abcde" Dim arr() As String ReDim arr(Len(txt) - 1) Dim i As Long For i = 1 To Len(txt) arr(i - 1) = Mid(txt, i, 1) Next
といったコードになるのに比べ、やはりシンプルなコードで済みます。
list関数で1文字ずつのリストを作成する
上記のfor文を使ってリストを作成する方法は身に付けていただきたいのですが、単純に何らかの文字列から1文字ずつのリストを作成したいのであれば、Pythonではもっと簡単なコードで済んでしまいます。
拙著の「8-6. rangeからリストを作成する」でもご紹介しているlist関数(厳密にはlistコンストラクタ)を使えば、ループ処理を使わず、1文字ずつのリストを作れます。
arr = list(txt)
これだけのコードで、
['a', 'b', 'c', 'd', 'e']
のように1文字ずつを要素として持つリストが作れます。これだけシンプルなコードで済んでしまうのを知ると、VBAでも同じようにできたらイイのになあと思わざるを得ません。
先述のfor文を使うコードとあわせて、ご自分の手を動かして確認してみてください。
最終更新日時:2020-11-11 05:12
- Newer:モンテカルロ法で円周率の近似値を求める
- Older:Word VBAでヘッダー編集モードにする
Home » 電子書籍 » VBAユーザーのためのPython超入門 » 1文字ずつのリスト作成もPythonならlist関数で簡単に