表記方法
内包表記
リスト内包表記
[式 for 変数名 in イテラブルなオブジェクト]
式の結果を新規のリストに格納する。
list_1 = [1, 5, 73, 98] list_2 = [i*2 for i in list_1] print(list_2) #-> [2, 10, 146, 196]
- 10個のランダムな整数が入ったリストをつくる
import random nums = [random.randint(0, 30) for _ in range(10)] print(nums)
アンパック時に *_ で不要な要素を除外する
*_
で残りの要素を一つのリストにまとめられる。_
である必要はないが、使用しない要素は _
で区別されることが多い。
l = [0, 1, 2, 3, 4, 5, 6] a, b, c, *_ = l print(a, b, c) #-> 0 1 2 print(_) #-> [3, 4, 5, 6] # _ でなくても問題ない t = (0, 1, 2, 3, 4, 5, 6) a, b, *u = t print(a, b) #-> 0 1 print(u) #-> [2, 3, 4, 5, 6]
可変長引数
引数の個数を制限しない書き方。
イテラブルオブジェクトはアンパックして渡す。
*args はタプルで受け取る。
def func(word, *args): print(word) print(args) for arg in args: print(arg) print() func("普通に渡す", 0, 1, 2) #-> 普通に渡す #-> (0, 1, 2) #-> 0 #-> 1 #-> 2 func("アンパックしたリスト", *[4, 5, 6]) #-> アンパックしたリスト #-> (4, 5, 6) #-> 4 #-> 5 #-> 6 func("アンパックしたタプル", *(7, 8, 9)) #-> アンパックしたタプル #-> (7, 8, 9) #-> 7 #-> 8 #-> 9 func("リスト", [10, 11, 12]) #-> ([10, 11, 12],) #-> リスト #-> [10, 11, 12]
集合
定義 | a = {1, 3, 3, 4, 6, 6, 7} b = {1, 2, 5, 8, 9, 9} print(a) #-> {1, 3, 4, 6, 7} print(b) #-> {1, 2, 5, 8, 9} |
set で定義 | a = [1, 3, 3, 4, 6, 6, 7] a = set(a) |
リストへ変換 | list(a) |
積集合 | どちらにもあるもの | a & b |
和集合 | 合併 | a | b |
差集合 | a - b |
どちらか一方にしか入っていないもの | a ^ b |
部分集合か判定 | a <= b |
上位集合か判定 | a >= b |
要素を追加 | a.add(10) |
要素を削除 | a.discard(5) discard で消す場合は値がなくてもエラーがでない |
Docstrings
関数を宣言した直後にコメントアウトすることで関数の解説を記述できる。
def func(x, y): ''' Docstrings : 関数の解説をここに記述していく :param x(string): 連結する文字列 :param y(float): 連結する整数 :return (string): 文字列に連結して返す ''' return x + str(y) if __name__ == '__main__': print(func.__doc__) help(func)
Docstrings : 関数の解説をここに記述していく :param x(string): 連結する文字列 :param y(float): 連結する整数 :return (string): 文字列に連結して返す Help on function func in module __main__: func(x, y) Docstrings : 関数の解説をここに記述していく :param x(string): 連結する文字列 :param y(float): 連結する整数 :return (string): 文字列に連結して返す
使い方わすれがちな関数
あくまで個人的に使う頻度が少ないやつ
all 関数
リスト内のすべての要素が True か判定する。
ひとつでも False が入っていれば False を返す。
print(all([True, True, True, True])) #-> True print(all([False, True, True, True])) #-> False print(all([1, 1, 1, 1])) #-> True
enumelate 関数
for 文で繰り返した回数を変数に格納できる
for i, j in enumerate(["zero", "one", "two"]): # i に繰り返した回数が入る print(i, j) #-> 0 zero #-> 1 one #-> 2 two
zip 関数
for 文を回すときに複数のリストを一度に回せる。
個数が違うリストが含まれるときは余剰分の要素が省かれる。
a_l = [0, 1, 2] b_l = ["zero", "one", "two"] c_l = ["零", "一", "二", "三", "四", "五"] for a, b, c in zip(a_l, b_l, c_l): print(a, b, c) #-> 0 zero 零 #-> 1 one 一 #-> 2 two 二 # 余った c_l の 三 以降は無視される
ほとんど使わないけど稀に見かけて調べる機能
いつも混乱するやつ
アノテーション
関数の引数や戻り値の型を明示できる機能。
import random from typing import List # 引数が整数のリスト # 戻り値が文字列のリスト であることを明示する def func(arg_list: List[int]) -> List[str]: print(arg_list) #-> [343, 352, 370, 748, 991, 654, 876, 86, 54, 202] return_list = [] [return_list.append(str(i)) for i in arg_list] return return_list print(func([random.randint(0, 1000) for _ in range(10)])) #-> ['343', '352', '370', '748', '991', '654', '876', '86', '54', '202']
仮想環境
Python のバージョン確認 | python -V |
パスが通ってる Python のパス全て | (プロンプト)where python |
3系の仮想環境
仮想環境の作成 | python -m venv 環境名 |
仮想環境の有効化 | 環境名\Scripts\Activate.ps1 |
仮想環境を抜ける | deactivate |
requirements の作成 | pip freeze > requirements.txt |
2系の仮想環境
virtualenv のインストール | pip install virtualenv |
仮想環境の作成 | python -m virtualenv 環境名 |
仮想環境の有効化 | コマンドプロンプト | Scripts\activate.bat |
仮想環境の有効化 | PowerShell | venv\Scripts\Activate.ps1 |
仮想環境を抜ける | deactivate |
requirements の作成 | pip freeze > requirements.txt |
pip の操作
パッケージのリスト | pip list |
インストール | pip パッケージ名 |
アンインストール | pip uninstall パッケージ名 |
pip のアップデート | pip install --upgrade pip |
pyenv
ローカルで使用する Python を切り替える | pyenv local 2.7.10 |
全体で使用する Python を切り替える | pyenv global 2.7.10 |
コマンドリスト | pyenv |
バージョンの確認 | pyenv --version |
インストールできるバージョンを確認 | pyenv install --list |
pyenv で Python インストール | pyenv install 2.7.10 |