【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】関数

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 文字飛ばしで