[初心者向け]用途別で使うPythonの関数・ライブラリ一覧[Tips]

# はじめに
<!-- 発端や概要を記載 -->
Pythonには様々なライブラリ・関数が、標準・外部ともに存在します。
しかし、その全てを把握できていない人も大勢いると思います。

今回は、以下の3点に対しての解決案として関数やライブラリをご紹介します。

- Pythonで何がライブラリや組み込み関数で実装されてるのか分からない人
- 他人のコーディングを見てもすぐに理解できない人
- 作りたいものはあるが、どう作っていいか手も足も出ない人

この記事を通して、以上の苦手意識を少しでも解消していただけると幸いです!!
QiitaもしくはWebブラウザのお気に入りに登録し、困った時に都度ご活用ください!!

:::note info
この記事はこれからも更新する予定ですので、ストックすると良いですよ🐍🎸
:::

# 目次
<!-- タイトルとアンカー名を編集 -->
-  [文字列の初め/最後に特定の文字列があるか調べたい](#文字列の初め最後に特定の文字列があるか調べたい)
- [ライブラリにどんなモジュールや関数があるのか一覧で知りたい](#ライブラリにどんなモジュールや関数があるのか一覧で知りたい)
- [マウス操作、キーボード操作をしたい(準備中)](#マウス操作キーボード操作をしたい準備中)
- [設定ファイルの情報を取得したい(準備中)](#設定ファイルの情報を取得したい準備中)
- [文字列の初め/最後にある特定の文字列を削除したい(Python3.9以降)](#文字列の初め最後にある特定の文字列を削除したいpython39以降)
- [for文がどこまで進んでるのか可視化したい](#for文がどこまで進んでるのか可視化したい)
- [References](#references)

<!-- 各チャプター -->
# 本編
## 文字列の初め/最後に特定の文字列があるか調べたい
:::note warn
Python3.9以降に導入された組み込み関数です。
:::

```python:python
startswish()  #初め
endswish()  #終わり
```
例："Python3"の後ろに"3"があるかどうか調べるとき、

>if "Python3"[-1]=="3":
>　（以下、条件を満たすときのコード）

こういう形で、書くことはできます。
ただ、この条件式が真ならばTrue、偽ならばFalseと判断したい場合は、
>if "Python3".endswish("3")
>　（以下、条件を満たすときのコード）

というように、組み込み関数を用いた記述ができます。
特に、判定のロジックが複雑になるほど、一目で分かりやすいため、
記述ミスを減らすことにもつながります。

:::note info
endswish()関数は、ファイル名の拡張子を判別したいとき等にも活用できます！
:::


## ライブラリにどんなモジュールや関数があるのか一覧で知りたい
```py:python
from see import see #see関数を用いる/※seeライブラリは外部ライブラリです。
import "調べたいライブラリ、モジュール"
see( ーーーー調べたいライブラリ、モジュールーーーー)
```
初心者にとって手を止めてしまうことの一つとして、
ライブラリの中身を把握できていないことが私の経験上ありました。
ライブラリを道具箱に喩えるとするなら、その中の道具が何かわからないという状況です。

>公式ドキュメントやQiitaなど、調べたとしても分かってるようで分からない。。
collections,sklearn,matplotlibなど、多くの道具が入れられているライブラリは、自力で実装し終わってから判明することもしばしば。。

__▶▶こうした問題を解決してくれるのがseeライブラリです！__

以下、標準ライブラリの一つであるmathライブラリの中身を調べた時の入出力です。
```py:python
import math
from see import see
see(math)
```
>[出力結果]
ismodule        help()          .acos()         .acosh()        .asin()
    .asinh()        .atan()         .atan2()        .atanh()        .ceil()
    .comb()         .copysign()     .cos()          .cosh()         .degrees()
    .dist()         .e              .erf()          .erfc()         .exp()
    .expm1()        .fabs()         .factorial()    .floor()        .fmod()
    .frexp()        .fsum()         .gamma()        .gcd()          .hypot()
    .inf            .isclose()      .isfinite()     .isinf()        .isnan()
    .isqrt()        .ldexp()        .lgamma()       .log()          .log10()
    .log1p()        .log2()         .modf()         .nan            .perm()
    .pi             .pow()          .prod()         .radians()
    .remainder()    .sin()          .sinh()         .sqrt()         .tan()
    .tanh()         .tau            .trunc()

このmathライブラリは数学に関するものですが、この出力結果を元に、
>・asin,acos,atanなどがのsin, cos,tan以外の三角関数
>・isinfやisnanといった条件の真偽でTrueやFalseを返す関数
>・円周率πやネイピア数eといったお馴染みの定数

以上の3点の実装があることを確認できました。

▶組み込み関数の一つのdir関数でも確認できますが、出力結果が見易いという点でsee関数をお勧めしています。
▶外部ライブラリにつき、予めインストールを要します。（以下、入力例）

```zsh:zsh/bash
pip install see
```
## マウス操作、キーボード操作をしたい(準備中)

```py:python
import keyboard
import mouse
```
▶標準ライブラリの一つであるctypesでもキーボード操作は可能ですが、記述内容が理解しやすいという点でkeyboardライブラリをお勧めしています。
>ctypesライブラリの場合は、ASCII文字コードの記述を要する(例　Esc：27)

▶外部ライブラリにつき、予めインストールを要します。（以下、プロンプトでの入力例）

```zsh:zsh/bash
pip install mouse
pip install keyboard
```
# 文字列の初め/最後にある特定の文字列を削除したい(Python3.9以降)
:::note warn
Python3.9以降に導入された組み込み関数です。
:::

```py:python
removeprefix() #はじめ
removesuffix() #最後
```

▶Python3.9以降には、文字列の初め/最後にある特定の文字列を削除する組み込み関数が実装されています。
▶バージョンが上がれば新機能が実装されるので、特に理由がなければ初心者の方には最新版（※ただし安定版）を使うのをお勧めしています。

以下、使用例です。

```py:python
tsundere = "べ、べつに、、君のこと好きなんじゃないんだからね‼"
waruguchi=tsundere.removeprefix("べ、べつに、、")
honshin=tsundere.removeprefix("べ、べつに、、").removesuffix("なんじゃないんだからね‼")
print(tsundere) #'べ、べつに、、君のこと好きなんじゃないんだからね‼'
print(waruguchi) #'君のこと好きなんじゃないんだからね‼'
print(honshin) #'君のこと好き'
```

## for文がどこまで進んでるのか可視化したい
```py:python
from tqdm import tqdm
for 添え字 in tqdm(range(数字)):
 # 処理
```
外部ライブラリのtqdmは、プログレスバー（ステータスバー）により、for文の進捗状況を可視化することができます。

以下、実装例です。

```py:python
from tqdm import tqdm
for i in tqdm(range(5)):
 print(i)
```
>出力結果
  0%|                                                                                            | 0/5 [00:00<?, ?it/s]0
1
2
3
4
100%|██████████████████████████████████████████████████████████████████████████████████| 5/5 [00:00<00:00, 5000.36it/s]

▶外部ライブラリにつき、予めインストールを要します。（以下、入力例）

```zsh:zsh/bash
pip install tqdm
```
# References
## More Info
- https://pypi.org/project/see/
- https://pypi.org/project/keyboard/

## About me

- SNS landing page(lit.link): https://lit.link/myon123
- GitHub: https://github.com/myon-bioinformatics
- Qiita: https://qiita.com/myon-bioinformatics
- Twitter(仕事用): https://twitter.com/myonitbusiness
- Twitter(プライベート用): https://twitter.com/myonmusicpgdev
- tumblr: https://www.tumblr.com/myon-helloworld
- Reddit: https://www.reddit.com/user/myon_reddit
- Pixiv: https://www.pixiv.net/users/87109499
- YouTube(Composer): https://www.youtube.com/channel/UC22_pvlkQynYsrSpAfyzEzA
- SpeakerDeck: https://speakerdeck.com/myon_bioinformatics
- マシュマロ(質問箱): https://marshmallow-qa.com/myonitbusiness

- LINE: https://line.me/R/ti/p/@661cphit
- Microsoft TechNet: https://social.msdn.microsoft.com/Profile/myon.TechNet
- プロフカード: https://profcard.info/u/ziUhwgZihSSTLZdqPZ0gz5aru6A3
- ニコニコ動画(niconico): https://www.nicovideo.jp/user/126513036
- Wish List: https://www.amazon.co.jp/hz/wishlist/ls/290EJPJ3PAS73?ref_=wl_share
- 転職ドラフト: https://job-draft.jp/users/58541
- RESUME.id: https://www.resume.id/myon
- Wantedly: https://www.wantedly.com/id/myon123
- Mastodon: https://mstdn.social/@myon
- mixi: https://mixi.jp/show_profile.pl?id=68...
- Instagram: https://www.instagram.com/myonmusicpgdev
- Pinterest: https://www.pinterest.jp/myonmusicpgdev

- Forkwell: https://portfolio.forkwell.com/@myon

https://twitter.com/myonitbusiness/status/1573533239133671424


https://twitter.com/myonitbusiness/status/1587393241371987968