これは、以下のほぼほぼIT知識のない人間が、調子に乗ってPython3を学ぶ上での備忘録である。
※話はどうでも良いところで長いタイプです。
Qiitaをお使いの諸兄にとっては、中身はないに等しいです。
#経緯というか経歴というか、私の知識レベル
十数年前にプログラマを目指してC言語とアセンブラを必死に勉強したものの、アセンブラのメモリ値選択理由がないと言われて心が折れて以来、さーっぱりプログラミングから離れ、つい3年ほど前に業務効率化に興味をもってExcelをメインに仕事を始めてVBAも書くようになった程度の人間が、アラサーも過ぎて正しく調子に乗ってPython3を学ぶ上での備忘録です。
(上の説明を長くしました)
(正直心折れた理由も正しく説明できないくらい時が経ちました。記憶から薄れる用語)
ここ3年でiパスなら取った。情セキュも取った。
基本情報技術者? 勉強……止まってる。
フレームワークって考え方のことでしょ?
半年以上前に、本の通りにPython書いてBJ作ったけど、GitHubってなんなの。
Djangoってなんなの。
こんなやつですが、調子に乗ってpaizaのpython3入門編を1から真面目に(時に聞き流しながら)演習問題を解いて、とりあえず1週間ほどでpaizaのBランクは取得しました。
入門編は実はまだ最後まで走り切っておりません。
入門編6までで止まっています。(スキルチェックを優先してしまった)
#まず最初につまずいたこと、標準入力
標準入力ってなんなん。ということ。
何せVBAは標準入力に値する言葉がありませんというか、私の知識の中にありません。
読み込ませたい内容は、セルに書いてあるかテキストファイルとして読み込むものです。
おかげで、最初のスキルチェックが一切わからず、聞かれるたびに無力感を感じ、paizaから逃げておりました。
結論としては、
str = input() #strは任意の変数
って書いた行数だけ変数に入力値を読み込む。
だったのですが、もう本当にVBAにその概念がなさ過ぎて、それならそう一言で言ってくれよ……と思いました。
Forで回すに至っては、下記に置き換えてやっと、なるほどね。という気分です。
str = Cells( i, 1 )
#で、今回メモしたかったこと、
時間も無くなってきたのでやっと本題です。
今回メモしたかったのは、重複するワードが存在する配列において、その配列において各ワードの初出順に、重複回数を返す、というちょっと詳しく説明しようとすると何かに抵触しそうな内容です。
いやでも、これ使うことあると思うのよ。
どうやろうかと調べるに当り、下記のサイトさんなどに目を通しました。
https://note.nkmk.me/python-list-unique-duplicate/
https://www.lifewithpython.com/2013/11/python-remove-duplicates-from-lists.html
https://pg-chain.com/python-list-set
なるほどsetなるものがあるねー。あー、sotedとか学んだな。
と書いてみたのですが、内容に知らないことが含まれていたので、深く理解することを避けたまま書いたため、思い通りの結果は得られませんでした。
ソートされた並び順でなら吐き出せたんですけどね。初出順にするのに混乱したので即座に諦めました。
ので、阿呆とは承知で自分が理解できる手順で、自分がもっている知識のみを使って書くことにしました。
実際に書いたコード抜粋は規約に反しそうなので、便利だったもののみを記します。
結局やりたいことを調べた結果、任意のワードがリスト内で何回重複しているかがわかるコードがありました。
list.count(str)
#listとstrは任意の変数
なにこれ超便利。
じゃああとはー、重複のあるリストをもとに重複のないリストを用意してー、それをもとに重複のあるリストで数を数えればー……完璧じゃん!
なんでしょう、非常に見慣れたコードのくせして使い方が一切慣れないので、すぐにそらでは書けなさそうなのでここに残します。
っていうかその一行のためだけにこれだけの恥を書いたのだからもう覚えてほしいです。
#おわり
これより、Pythonの勉強どころじゃなくならない限り、少しずつ学んだことをここにまとめ残していきたいと思います。
頑張ります。