覚えてると超かっこいい脱Python初心者な構文

  • 194
    Like
  • 12
    Comment

はじめに

僕自身Python初心者なので
「もっとこうしろよ」 「書き方キメエんだよ」 「死ね!」
等、意見あると思いますが遠慮なくコメントに書いてもらえると嬉しいです!

この記事はPython3を前提として進めていきます!
順番とか種類別や難易度別に分けている訳ではないです

その1.enumerate

enumerateは英語で「数える」という意味がありますが、そのままです。
for文で使うことが多いかも?

コード

追記: sとiの順番が逆だった点を修正しました。現在は修正済みのコードです。
l = list("abcde") # ['a', 'b', 'c', 'd', 'e']

for (i,s) in enumerate(l): # sにlの要素が代入され、iには1,2,3・・・と続きます
    print("{}: {}".format(i,s))

出力

0: a
1: b
2: c
3: d
4: e

その2.zip

zip関数は決してzipファイルを扱うような関数ではありません!!!!
こちらもfor文で結構使うと思います。2つの変数をまとめて繰り返しにかけたいときに使う関数です

コード

alphabet = list("abcde")  # ['a', 'b', 'c', 'd', 'e']
number = list(range(1,6)) # [1, 2, 3, 4, 5]

for (s,i) in zip(alphabet, number): # alphabetをsに、numberをiに代入していく
   print("{}: {}".format(s,i))

リザルト

a: 1
b: 2
c: 3
d: 4
e: 5

その3.lambda式

無名関数と呼ばれるものです。少し丁寧に解説します。

まずはこのような関数があったとします

def square(x): #square関数、xを二乗して返す
   return x**2

square(5) #25
square(10) #100

与えられた引数xを二乗して返すだけの簡単な関数です。
これをlambda式で書くとこうなります。

追記: コメントより、lambda式を変数へ代入するのはPEP8違反だとのご指摘を頂きましたのでサンプルを修正しました。
ans = map(lambda x: x**2, [5, 10]) #5と10にlambda式の処理をかける(mapについては後述)
print(list(ans)) # [25, 100]

コードが簡潔になりますね。

追記: メリットについてコメントよりご指摘がありましたので修正しました

その4.map

map関数、むっちゃ使います。すべての要素にまとめて処理をかける関数です。

コード

string_l = list("0123456789") 

"""
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
#この時点で変数l内の全ての要素のtypeはstr
#これを全てint型にしたい
"""

int_l = list(map(int, string_l))

#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

このように、str型のみのリストの要素を、まとめてintに変えることができました。

むっちゃ便利なので覚えておくと人生変わります。まじで。