【Python3】無名関数
def function1(): return "function1" def function2(): return "function2" function = function2 # 関数を変数に代入する(関数オブジェクト) print( function() ) #関数を呼び出す
function = lambda x : x * 2 #ラムダ print( function( 3 ) )
i = [1, 3, 5, 7, 9] func = lambda x : x * 2 o = map(func, i) #リストに対してラムダを実行 print( list( o ) )
i = [1, 2, 3, 11, 12, 13, 21, 22, 23] o = filter(lambda x : (x % 2) == 0, i) #リストに対しラムダの条件を満たすものを抽出 print( list( o ) )
#リスト animal_list = [ ("ライオン", 58), ("チーター", 110), ("シマウマ", 60), ("トナカイ", 80) ] faster_list = sorted(animal_list, key = lambda ani : ani[1], reverse = True) #指定されたキーの降順にソート for i in faster_list : print(i) #辞書型 animal_dict = { "ライオン": 58, "チーター": 110, "シマウマ": 60, "トナカイ": 80 } faster_list = sorted(animal_dict.items(), key = lambda ani : ani[1], reverse = True) #指定されたキーの降順にソート for name,speed in faster_list : print(name,speed)
【Python3】グローバル変数とローカル変数
variable = 100 #グローバル変数 def Function(): variable = 200 #ローカル変数 print("variable="+str(variable)) #異なるスコープが
variable = 100 def Function(): global variable #グローバル宣言 variable = 200 Function() print("variable="+str(variable))
【Python3】関数
def Function(str): #関数の定義 '''関数の説明''' #関数の説明 return str * 3 #戻り値 Function("Hello ") #呼び出し
help(Function) #関数の説明を見る
def Function(str = "Hello "): #デフォルト引数を指定 return str * 3 print( Function() )
def Function(s1, s2): return s1 + " " + s2 print( Function( s1="Hello", s2="World" ) ) #名前付き引数の指定
def Sum(*args): #可変長引数 v = 0 for n in args: v += n return v print( Sum(1,2,3) ) print( Sum(1,2,3,4,5) )
def print_args(**args): #辞書型の可変長引数 print(args) print_args( a=30, b=50, c=40 ) print_args( aa="hoge", bb="fuga" )
【Python3】文字列操作
s1 = "100 200 300 400" s2 = s1.split() #区切り文字を指定しない場合は空白文字で区切られる s1 = "100,200,300,400" s2 = s1.split(',') #指定した文字で区切られる s1 = "100,200,300,400" s2 = s1.split(',', maxsplit=1) #maxsplit を指定すると指定された回数しか区切られない s1 = ["100", "200", "300"] s2 = "-".join(s1) #リストを文字列で連結させる s1 = "This is a pen." s2 = s1.replace("pen", "note") #pen を note で置き換える s = "Hello World".find("o") #文字列を検索する s = "Hello World".find("o", 6) #指定された位置から文字列を検索する s = "Hello World".find("o", 6, 7) #指定された位置から指定された位置までの間に文字列を検索する s = "HELLO WORLD".lower() #小文字にする s = "hello world".upper() #大文字にする s = ' Hello World '.strip() #先頭と末尾の文字集合を削除。指定しない場合は先頭と末尾の空白を削除 s = '" Hello World "'.strip('"') #先頭と末尾の文字集合を削除。 s = "Hello World".startswith("Hello") #文字列が指定された文字列で始めるなら True を返す isNumeric = "123456".isnumeric() #文字列が数値を示すなら True をそうでないなら False を返す isNumeric = "-123456".isnumeric() #文字列が数値を示すなら True を返すが負の値は判定できない模様
【Python3】リスト
l = [10,22,30,45] #配列 l[0] #0 番目の要素 l[3] = 550 #3 番目の要素に代入 l[-1] #末尾から 1 番目の要素 len(l) # 配列の要素数 sum(l) #合計 for elem in l: #配列の各要素にアクセス print(elem) for elem in enumerate(l): #インデックス付きで各要素にアクセス print(elem) l.append(100) #追加 l.extend([33,44]) #リストを追加 del l[2] # 2 番目の要素を削除 del l[2:4] # 2 番目から 4 番目までの要素を削除 l.insert(1, 50) #1 番目の位置に挿入 l.remove(4) #4 を除外 l.pop() #×美の要素と取り出し削除 l.clear() #全要素を削除 l.index(3) #3 番目の要素 l.count(4) #4 が出現する回数 l.sort() #ソート l.sort(reverse=True) #逆順でソート l2 = l.copy() #複製(浅いコピー) l[1:3] #1 から 3 までの要素をスライス l[1:3:2] #1 から 3 までの要素を 2 ステップでスライス l[:3] #3 までの要素をスライス l[1:] #1 からの要素をスライス l[-2:] #末尾から 2 番目から末尾までの要素をスライス l[2:8:2] #2 番目から 8 番目の間を 2 ステップでスライス l[::3] #最初から最後まで 3 ステップでスライス
t = (10,20,30) t = t[:2] #スライス l = list(t) #タプルをリストにする t = list(l) #リストをタプルにする
タプルは要素を変更できないリスト
s = {"red","green","blue"} #集合型を生成 s = set() #空の集合型を生成 box1 = {"ハンマー","釘","ペンチ"} box2 = {"釘","ペンチ"} box3 = box1 - box2 #集合方の減算 isIn = "ハンマー" in box1
set は重複できないリスト
args = {"鈴木":30,"井上":20,"伊藤":22} #辞書型 args["鈴木"] #鈴木の値 "井上" in args #含まれるか否か args.keys() #キーの列挙(dict_keys 型) list(args.keys()) #キーの列挙(list 型に変換) sorted(args) #ソート済みの一覧を取得 args.values() #値の列挙(dict_values 型) list(args.values()) #値の列挙(list 型に変換) args.items() #値の列挙((dict_items 型)) list(args.items()) #値の列挙(tuple の list 型に変換) for key, value in args.items(): #for をキーと値でイテレーション print("key={0},value={1}".format(key, value))
dict はキーと値を持つリスト
【Python3】制御文
c は論理値とする
if c: print("True") else: print("False")
if c: print("True")
if c: pass #何も書かないとエラーになる。何もしないことを示すために pass 命令を使う else: print("False")
Python はインデントでブロックを定義していている
c = 10 while c >= 0: #繰り返し処理 c -= 1 print(c) else: print("Finish") #繰り返し処理後の処理
c = 10 while c >= 0: #繰り返し処理 c -= 1 print(c) break #途中で処理を抜ける else ブロックは実行されない else: print("Finish") #繰り返し処理後の処理
c = 10 while c >= 0: #繰り返し処理 c -= 1 print(str(c)+"(1)") continue #処理を中断しループの頭に戻る print(str(c)+"(2)") else: print("Finish") #繰り返し処理後の処理
for i in range(5): #回数繰り返し print(i) else: print("Finish")
for i in range(1, 10): #範囲繰り返し(終了値は含まない) print(i) else: print("Finish")
for i in range(1, 10, 2): #ステップ数を定義しての範囲繰り返し(終了値は含まない) print(i) else: print("Finish")
【Python3】文字列
'I would like to be a programmer.' #シングルクォートで囲った文字列 "I would like to be a programmer." #ダブルクォートで囲った文字列 'I\'d like to be a "programmer".' #シングルクォートで囲った文字列 "I'd like to be a \"programmer\"." #ダブルクォートで囲った文字列
"\\" #バックスラッシュ '\'' #シングルクォート "\"" #ダブルクォート "\r\n" #改行(CRLF) "\n" #改行(LF) "\t" #タブ文字 "\x41" #16 進数の文字 "\u4e16" #16bit Unicode で 16 進数の文字 "\U00004e16" #32bit Unicode で 16 進数の文字
'''Hello World''' #シングルクォートの三重引用符で複数行 """Hello World""" #ダブルクォートの三重引用符で複数行
"Hello" + " " + "World" #文字列の連結 "python" + str(3) #文字列と数値の連結 "{0}本でもニンジン、{1}足でもサンダル、{2}艘でもヨット".format(1,2,3) #書式文字列 "{key1}本でもニンジン、{key2}足でもサンダル、{key3}艘でもヨット".format(key1=1,key2=2,key3=3) #書式文字列
s = "Hello World." s + " こんにちは世界" #連結 s * 3 #繰り返し s[1] #1 文字目 s[1:5] #1 文字目から 5 文字目まで s[1:] #1 文字目以降 s[:7] #7 文字目まで s[1:11:4] #1 文字目から 11 文字目まで 4 文字飛ばしで