それでは下記の記事👇の続きをやっていこう!前回よりも少し難しく感じるところも有ると思いますが、一つずつ理解していけば問題ありません🤓
Contents
Slicing
✔️ ” : “を使うことで、複数のオブジェクトを取得可能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# Slicing : 複数の要素取得可能 even = [1, 3, 5 ,7, 9, 11] # <em>[開始 : 未満]</em>の要素を取得 print(even[1:4]) # [3, 5, 7] print(even[:4]) # [1,3, 5, 7] print(even[3:-1]) # [7, 9] print(even[3:]) # [7, 9, 11] print(even[:]) # [1, 3, 5 ,7, 9, 11] text = "Hello World" print(text[3:]) # lo World # [開始 : 未満 : step]の要素を取得 print(text[2:10:2]) # loWr print(text[ : : -1]) # dlroW olleH |
joinとsplit
✔️join: リストの各オブジェクト間に新たなオブジェクトを追加し、一つの文字列を作ることが出来る
✔️split: joinの逆で、文字列を区切り、リストに格納出来る
✔️ファイルの操作に頻出
1 2 3 4 5 6 7 8 9 10 |
# join text = " ".join(["Hey,", "My", "name", "is", "Pankun."]) print(text) # Hey, My name is Pankun. # split text2 = "Hey, My name is Pankun.".split(" ") print(text2) # ['Hey,', 'My', 'name', 'is', 'Pankun.'] filename = "sample.py" print(filename.split(".")[0]) # sample |
in演算子
✔️オブジェクトが含まれているかBoolean型で返ってくる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
cars = ["Corolla", "Prius", "Yaris", "Rav4"] print('Prius' in cars) # True print('Aqua' in cars) # False print('Aqua' not in cars) # True print('h' in 'hello') # True #ユーザーにトヨタ車で好きな車種を聞き、carsリストにあればその車種を削除 # 無ければ、carsリストに追加する cars = ["Corolla", "Prius", "Yaris", "Rav4"] customer_choice = input("好きなトヨタ車を入力して下さい") if customer_choice in cars: print("{}ですね、タダであげます".format(customer_choice)) cars.remove(customer_choice) print("残っている車は{}です".format(cars)) else: cars.append(customer_choice) print("{}を追加しました、取り揃えているのは{}です".format(customer_choice, cars)) |
forループ
✔️オブジェクトを1つずつ取り出すことが出来る
✔️forループで回すことをイテレーション(iteration)するいい、iterationできるオブジェクトをiterableという
1 2 3 4 5 6 7 8 9 10 |
# forループ cars = ["Corolla", "Prius", "Yaris", "Rav4"] for car in cars: print(f"I drive {car}!!") # I drive Corolla!! # I drive Prius!! # I drive Yaris!! # I drive Rav4!! for char in "Hello World!!": print(f"char: {char}") # char: H char: e char: l char: l char: o char: # char: W char: o char: r char: l char: d char: ! char: ! |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# ユーザーにcarsリストの各車種に対して「好きor好きではない」を聞いて、好きな車リスト、好きじゃない車リストを作成 cars = ["Corolla", "Prius", "Yaris", "Rav4", "Voxy", "86", "NX", "UX"] cars_love = [] cars_nolove = [] for car in cars: car_judge = input((""" 好きな場合は'y'好きじゃない'場合は'n'を入力して下さい {} は? y/n """).format(car)) if car_judge == 'y': cars_love.append(car) elif car_judge == 'n': cars_nolove.append(car) else: print('入力に誤りがあります') else: print("質問は以上になります") print("car_love: {}".format(cars_love)) print("car_nolove: {}".format(cars_nolove)) |
range
✔️forループで回す際の範囲を意図的に指定することが出来る
✔️数字をfor文で回す時には変数は”i”とすることが一般的
✔️ startもしくはstepを設定していない場合、0からスタートで1ずつ増える(引数が一つだけの場合、 stopで固定される)
✔️変数(i)が使われない場合、_(アンダースコア)で変数を使っていないことを読み手に明示的に表す
1 2 3 4 5 6 7 8 9 |
# range(start, stop, step) for i in range(1, 7, 1): print(i) // 1 2 3 4 5 6 for i in range(7): print(i) // 0 1 2 3 4 5 6 for i in range(3, 13, 2): print(i) // 3 5 7 9 11 for _ in range(3): print(""Hello) # Hello Hello Hello |
1 2 3 4 5 6 7 8 9 10 |
# FizzBuzzゲーム for i in range(1, 51): if i % 3 == 0 and i % 5 == 0: # if i % 15 ==0: print("FizzBuzz") elif i % 3 == 0: print('Buzz') elif i % 5 == 0: print("Fizz") else: print(i) |
whileループ
✔️リストや文字列ではforループを使うことが多いが、ある条件の時にまとまった処理がしたい時に頻出
✔️必ずループを抜けるコードになっているか確認する必要あり(無限ループに気を付ける)
✔️breakではループを抜け、continueではループを続行する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# whileループ count = 0 while count < 10: print(count) # 0 1 2 3 4 5 6 7 8 9 count += 1 # break と continue while True: age = int(input("あなたは何歳ですか?")) if not 0 <= age < 120: print("入力された値は正しくないです") continue else: print(f"あなたは{age}歳です") break |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
ex. カジノの入場&遊び方の選択) age = int(input("あなたは何歳ですか?")) casino_age = 18 game_text = """ プレイするゲームを選んでください(1~3で選択) 1: ルーレット 2: ブラックジャック 3: ポーカー """ if age >= casino_age: print("どうぞお入りください") while True: game = input(game_text) if game == "1": print("あなたはルーレットを選びました") break if game == "2": print("あなたはブラックジャックを選びました") break if game == "3": print("あなたはポーカーを選びました") break else: print("1~3で選んでください") continue else: print("18才未満の方は入れません") |
enumerate
✔️インデックス番号も取得することが出来る
✔️タプル型で返してくる
1 2 3 4 5 6 7 |
cars = ["Corolla", "Prius", "Yaris", "Rav4"] for idx, car in enumerate(cars): print(idx, car) # 0 Corolla # 1 Prius # 2 Yaris # 3 Rav4 |
リスト(list)の内包表記(List Comprehension)
✔️リスト内に直接変数を記入し、forループを格納できる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# リスト内包表記(List comprehension) # for loop square_list = [] for i in range(10): square_list.append(i ** 2) print(square_list) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] # list comprehension square_list = [i ** 2 for i in range(10)] print(square_list) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] square_list2 = [i ** 2 for i in range(10) if i % 2 == 0] print(square_list2) # [0, 4, 16, 36, 64] |
タプル型
✔️変更できないリスト
✔️[]ではなく()を使う
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# touple(タプル): 変更できないリスト([])ではなく()を使う date_of_birth = (1993, 6, 6) print(date_of_birth[0]) # 1993 date_of_birth2 = [1993, 11, 1] date_of_ birth2[0] = 2021 print(date_of_ birth2) # [2021, 11, 1] date_of_birth3 = (1996, 12, 6) date_of_ birth3[0] = 2021 print(date_of_ birth2) # Error year ,month, date = date_of_birth3 print(month) # 12 |
ディクショナリー型
✔️キー(key)とバリュー(value)の組み合わせを複数保持するデータ型
✔️ディクショナリーはキーとバリューの組み合わせを保持しているだけで、インデックスの順序は固定しないので注意
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# dictionary fruits_colors = {'apple': 'red', 'lemon': 'yellow', 'grapes': 'purple'} print(fruits_colors) # {'apple': 'red', 'lemon': 'yellow', 'grapes': 'purple'} print(fruits_colors['apple']) # red fruits_colors['peach'] = pink print(fruits_colors) // {'apple': 'red', 'lemon': 'yellow', 'grapes': 'purple', 'peach', 'pink'} dict_sample = {1: 'one', 'two': 2, 'three': [1, 2, 3], 'four': {'inner': 'dict'}} print(dict_smple['four']['inner']) # dict colors = {} colors[1] = 'blue' colors[0] = 'red' colors[2] = 'green' print(colors) # {1: 'blue', 0: 'red', 2: 'green'} # .keys(), .values() for fruit in fruits_colors.keys(): print(fruit) # apple lemon grapes peach for color in fruits_colors.values(): print(color) # red yellow purple pink for x in fruits_colors: print(x) // apple lemon grapes peach # .items() → enumerateと似ている for fruit, color in fruits_colors.items(): print(f"{fruit} is {color}") // apple is red lemon is yellow grapes is purple peach is pink |
ディクショナリーのmethod
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
fruits_colors = {'apple': 'red', 'lemon': 'yellow', 'grapes': 'purple'} # 条件文 if 'peach' in fruits_color: print(fruits_color['peach']) else: print('this key is not found') # the key is not found # .get() fruits_colors.get("peach", "Nothing") # Nothing fruit = input("フルーツの名前を指定して下さい") //入力→peach print(fruits_color.get(fruit, "Nothing") # Nothing # .update() fruits_color2 = {'kiwi': 'green', 'peach': 'pink'} fruitts_color.update(fruits_color2) print(fruits_color) # {'apple': 'red', 'lemon': 'yellow', 'grapes': 'purple', 'kiwi': 'green', 'peach': 'pink'} |
✔️ハードコーディングしないように簡潔にコードを書く
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# ディクショナリーを使った例 age = int(input("あなたは何歳ですか? :")) casino_age = 18 game_dict = {'1': 'ルーレット', '2': 'ブラックジャック', '3': 'ポーカー'} if age >= casino_age: print("どうぞお入りください") while True: print("プレイするゲームを選んでください") for i, game_name in game_dict.items(): print(f"{i}: {game_name}") game = input(":") if game in game_dict: print(f"あなたは{game_dict[game]}を選びました") break else: print("正しい選択肢を選んでください") continue else: print(f"{casino_age}才未満の方は入れません") |
セット型
✔️重複していてもlen()では重複せずに出力される
1 2 3 |
# セット(sets): 重複しないリスト cars = ["Corolla", "Prius", "Yaris", "Rav4", "Voxy", "Corolla"] print(len(cars)) # 5 |
型変換(Casting)
✔️built in functionで簡単に型変換することが出来る
1 2 3 4 5 6 7 8 9 10 11 |
# str(), int(), float(), list(), bool(), tuple(), set() print(type(str(5))) # <class 'str'> print(type(int(5))) # <class 'int'> print(5 + int("5")) # 10 print(str(5) + "5") # 55 print(float("5")) # 5.0 print(list("Hello")) # ["H", "e", "l", "l", "o"] print(bool(1)) # True print(bool("1")) # True print(set([1, 2, 3, 3, 4, 5, 5, 5])) # {1, 2, 3, 4, 5} |
mutableとimmutable
✔️オブジェクトを変更してIDが変わるか変わらないか
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# mutable: 変更可能なオブジェクト list dict, set cars = ["Corolla", "Prius", "Yaris"] print(f"carsのIDは{id(cars)}") # carsのIDは1323554564 cars.append("Rav4") print(cars) # ["Corolla", "Prius", "Yaris", "Rav4"] print(f"carsのIDは{id(cars)}") # carsのIDは1323554564 # mutable: 変更不可能なオブジェクト int, float, str, bool, tuple car = "Corolla" print(f"carのIDは{id(car)}") # carsのIDは 149475838593 car += ", Prius" print(car) # Corolla, Prius print(f"carのIDは{id(car)}") # carsのIDは149479034958 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# immutableで効率の悪いコーディング text = "" for i in range(1, 11): if i == 1: text += str(i) else: text += "-" + str(i) print(text) # 1-2-3-4-5-6-7-8-9-10 # mutableで効率の良いコーディング list = [] for i in range(1, 11): list.append(str(i)) list = "-".join(list) print(list) # 1-2-3-4-5-6-7-8-9-10 |
これでpythonの文法<基礎編>は終了です、いかがだったでしょうか?
僕も様々な本やUdemy講座、日々の業務でPythonを使っているのですが、忘れているところや新しい発見があってかなり勉強になりました!
次回は<関数編>についてまとめていきたいと思います☀️
今回はこの辺で、ばいばい👋
○Pythonをこれから勉強していきたい方
○Pythonの文法を詳しく知りたい方
○筆者と一緒に勉強をしていこうって思っている方