やさしいPython

今まではJSでしたが、これからPythonを始めるにあたって「やさしいPython」を読みました。
必要そうなところをサイトで調べながら、記載してます。

## リスト(変更可能)

    test = [10, 20, 30]

削除

    del test = [1] 

新しく作成

    test = (10, 20, 30)
    test2 = list(test) 

タプルからリストに変換

#### メソッド

`リスト.append()`：追加
`リスト.insert()`：位置に要素を挿入
`リスト.remove()`：削除
`リスト.extend()`イテラブルの要素を追加
`リスト.sort()`：ソート
`リスト.reverse()`：逆順
`リスト.copy()`：コピー
`リスト.pop([])`：末尾または指定位置の要素を削除
`リスト.clear()`：全て削除
`リスト.count()`：回数を数える

## タプル(変更不可)

    test = (10, 20, 30)
    test2 = 10, 20, 30

上記どちらも同じ

`tuple()`：タプル作成


## ディクショナリ(変更可)

    test = {"prefecture":"東京","sale":100}

新しく作成
    
    test = dict(キー = 値, キー = 値,)


値があるかないか(in ・ not inで調べる)

    data = [10,20,30]
    if 1 not in data:

0や空データがあるか調べる

    if any(data):

any：0や空の値でないものが1つでもあればTrue
all：0や空の値が1つもなければTrue

#### メソッド

`ディクショナリ.get()`：キーの値またはデフォルト
`ディクショナリ.update()`：追加更新
`ディクショナリ.pop()`：キーの値を削除
`ディクショナリ.pupitem()`：任意の対を削除
`ディクショナリ.clear()`：全て削除
`ディクショナリ.items()`：項目のビュー
`ディクショナリ.keys()`：キーのビュー
`ディクショナリ.values()`値のビュー

## セット(重複不可)

    test = { “東京”, “名古屋” , “大阪”}

※`&`や`｜`を使える

#### メソッド

`セット.add()`：追加
`セット.remove()`：削除
`セット.discard()`：要素があれば削除
`セット.pop()`：要素を削除してその要素を返す
`セット.clear()`：全て削除
`セット.update()`：更新
`セット.union()`：共有をとる
`セット.difference()`：差をとる
`セット.symmetric_difference()`:対称差をとる
`セット.issubset()`：部分集合
`セット.issuperset()`包含
`セット.copy()`：コピー

## 引数

    def a ( *args) 

    a(10,20,30)

※上記はタプルとして格納
引数を幾つでも渡して呼び出せる

    def a ( **args) 
    
    a(a=10,b=20,c=30)

※上記はディクショナリとして格納

関数に機能を追加するとき`@`を使う　=　デコレーダー

## クラス
「データ」と「処理」をまとめる

        class Person:
            def getName(self):
                return self.name

name:データ属性
getName関数:メソッド

#### コンストラクタ
`__init__`：インスタンスを作成する時最初に必ず呼び出される

#### カプセル化
`_`,`__`(値を変更されたくない)：アクセスを制限したい属性の名前につける


## ファイル

開ける→書き込む(読み込む)→閉じる　
　この流れは全て一緒
オープンモード：“w”は書き込み、"r"は読み込み
[その他書いてある記事](https://www.delftstack.com/ja/howto/python/python-open-modes/)

#### テキストファイル読み書き

    f =  open(“test.txt” , ”w”)
    f.write(“こんにちは¥n”)
    f.write(“こんばんは¥n”)

    f.close()




#### CSVファイル

    import csv

    r = csv.reader(f)
    w = csv.writer(f)
    w.writerow(["東京","名古屋"])
    w.writerows([["東京","名古屋"],["大阪","京都"]])

`writer()`関数を使うとライタを取得でき、`writerow`や`writerows`を使える

#### JSONファイル

    import json

関数
`load()`：読み込み
`dump()`：書き込み

## システム処理

    import os

`start()`：ファイル情報
`getcwd()`：現在のディレクトリ
`remove()`：削除
`mkdir()`：ディレクトリ作成
`rmdir()`：ディレクトリ削除
`rename()`：ファイル名変更
`listdir()`：ファイル名リスト
`access()`：アクセス権限を調べる
`chmode()`：アクセス権限を変更
`getenv()`環境変数の値を取得

    import os.path

`abspath()`：絶対パス
`dirname()`：ディレクトリ名
`basename()`：ファイル名
`split()`：分割
`splittext()`：拡張子名部分と分割
`commonprefix()`：パスの先頭から共通部分
`exists()`：存在するか
`commonpath()`：リストから共通する部分
`isfile()`：ファイルであるか
`isdir()`：ディレクトリであるか
`getsize()`：ファイルサイズ
`getatime()`：最終アクセス時刻
`getmtime()`：最終更新時刻
`getctime()`：作成時刻

## 日時情報

    import datetime

#### データ属性・メソッド

`datetime()`：日時を作成・取得
`datetime.now()`：現在の日時
`datetime.today()`：現在の日付
`datetime.fromtimestamp()`：タイムスタンプ
`datetime.strptime()`：指定したフォーマットの日時文字列
`日時.date()`：同じ日時のdate
`日時.time()`同じ日時のtime
`日時.weekday()`:曜日
`日時.strftime()`：指定したフォオーマットの日時文字列
`日時.year()`：年
`日時.month()`：月
`日時.day()`：日
`日時.hour()`：時
`日時.minute()`：分
`日時.second()`：秒
`日時.microsecond()`：マイクロ秒
`日時.tzinfo()`：タイムゾーン
`timedelta()`：日時の加減算




## 例外処理

    try:
        xxxxx

    except "例外クラス名":
            "例外あり"
        pass "通過して下の処理にいく"
        continue "処理をスキップする"
        break "強制終了、for文なら外にでる"
    else:
            "例外なし"
    finally:
        xxxxx	     	

## HTML解析

    import urllib.request

    urllib.request.urlopen()

    From html.parser import HTMLParser

## 組み込み関数メソッド

リストの値を順番に取り出す
 
    it = iter(data)
    next(it)

という指定を繰り返すことで順番に値を取り出せる

組み合わせる
zip( )

    city = [ “東京”, “名古屋” , “大阪”]
    sale = [80,20,10,70]

    for d in zip(city,sale)
    print(d)

=>`(“東京”, 80)(“名古屋”,20)(“大阪”,10)`

分解(アンパック)

    for c, s in zip(city, sale)

`print()`:標準出力への出力
`input()`：標準入力への入力
`len()`：長さ
`max()`：最大値
`min()`：最小値
`sum()`：合計値
`sorted()`ソート
`reversed()`：逆順
`iter()`：イテレータ取得
`repr()`：文字列を取得
`next()`：イテレータの次の要素取得
`enumerate()`：イテラブル列挙
`zip()`：イテラブルの要素を集める
`map()`：イテラブルに関数をを処理した結果
`any()`：イテラブルいずれかの要素がTrueであればTrue
`all()`：イテラブルすべての要素がTrueならTure
`open()`：ファイルを開ける
`dir()`：ローカルな名前取得
`int()`：整数に変換
`float()`：浮動小数点数に変換
`str()`：文字列に変換
`range()`：rangeを作成

## 文字列メソッド

`文字列.upper()`：大文字に変換
`文字列.lower()`：小文字に変換
`文字列.swapcase()`：大文字を小文字に小文字を大文字に変換
`文字列.capitalize()`：先頭を大文字、残りを小文字に変換
`文字列.title()`：タイトル文字
`文字列.center()`：指定幅で中央揃え
`文字列.ljust()`：指定幅で左寄せ
`文字列.rjust()`指定幅で右寄せ
`文字列.strip()`空白文字、指定文字を除去
`文字列.lstrip()`：先頭の空白文字、指定文字を除去
`文字列.rstrip()`：末尾の空白文字、指定文字を除去
`文字列.split()`：文字列を分解した各単語のリスト
`文字列.splitlines()`：文字列を行で分解した各行のリスト
`文字列.join()`：イテレータで返される文字列を結合した文字列
`文字列.format()`：文字列を指定書式
`文字列.find()`：部分文字列を検索
`文字列.rfind()`：部分文字列を逆順に検索
`文字列.index()`：findメソッドと同じ処理で例外を送出
`文字列.replace()`：置換した文字列
`文字列.count()`：部分文字列が何回出現するか
`文字列.startswith()`：先頭が検索文字列で始まればTrue
`文字列.endswith()`：末尾が検索文字列で始まればTrue

## 最後に
一番クラスの理解が浅いので、これから学習や実装をして記事を作成していきます！