LoginSignup
2
7

More than 3 years have passed since last update.

Python基礎2 for文、内包表記、lambda式のメモ

Posted at

pythonの基礎を備忘録として残しておく

summary

x = ['a', 'b', 'c']
for i in x:  # 配列を読み出す
for i in range(3):  # 0〜2を読み出す
for i, j in enumerate(x):  #インデックスと配列を読み出す
for i, j, k in zip(x, y, z)  # 複数の配列を読み出す

# x = {'a':1, 'b':2, 'c':3}
for k in x:  # キーを読み出す
for v in x.values():  # バリューを読み出す
for k, v in x.items():  # キーとバリューを読み出す

x = [1, 2, 3]
l = []
for i in x:
    l.append(i*3)
# 全ての要素を3倍(ノーマル)

[i*3 for i in x]
# 全ての要素を3倍(内包表記)

x = [1, '2', 3]
l = []
for i in x:
    if isinstance(i, str):
       continue
    l.append(i)
# strを除く

[i for i in x if not isinstance(i, str)] 
# strを除く(内包表記)

func = lambda x:print('引数は'+ x)
func = lambda x="未入力": print('引数は' + x)
(lambda x="未入力": print('引数は' + x))('整数')
(lambda x="未入力": print('引数は' + x))()

1. for 文

for 文は配列から要素を順次読み出して処理を行います。配列には、文字列、リスト、辞書、タプル、セットが該当します。

for 変数 in 配列
    処理

具体的な例を見て行きましょう。リストを読み込み、処理をする。

x = ['a', 'b', 'c']
for i in x:
    print(i)

# 出力結果
a
b
c

range関数を使ってインデックスを読み込み、処理をする。range(初期値, 回数, 増分)で、初期値と増分は記載しなければ、初期値=0、増分=1です。

for i in range(3):
    print(i)

# 出力結果



enumerate関数を使って、インデックスとリストを両方読み込み、処理をする。

x = ['a', 'b', 'c']
for i, j in enumerate(x):
    print(i, j)

# 出力結果
0  a
1  b
2  c

zip関数を使って、2種類以上のリストを読み込み、処理をする。

x = ['a', 'b', 'c']
y = ['L', 'M', 'S']
z = ['X', 'Y', 'Z']
for i, j, k in zip(x, y, z)
    print(i, j, k)

# 出力結果
a  L  X
b  M  Y
c  S  Z

辞書 {キー1:バリュー1, キー2:バリュー2, ...} からキーを読み出す。普通に書くとキーを読み出します。

# x = {'a':1, 'b':2, 'c':3}
for k in x:
    print(k)

# 出力結果
a
b
c

values関数を使って、辞書からバリューを読み出す。

x = ['a':1, 'b':2, 'c':3]
for v in x.values():
    print(v)

# 出力結果
1
2
3

items関数を使って、辞書からキーとバリューを読み出す。


x = ['a':1, 'b':2, 'c':3]
for k, v in x.items():
    print(k, v)

# 出力結果
a  1
b  2
c  3

2. 内包表記

for 文には内包表記という便利なものがあります。

[iの処理 for i in 配列]

具体的な例を通常表記と内包表記の2つの場合で、みて行きましょう。
リストを与えると全ての要素を3倍にして返す関数(例:[1, 2, 3] → [3, 6, 9])


def func(x):
    l = []
    for i in x:
        l.append(i*3)
    return l

def func(x):
    return[i*3 for i in x]

整数と整数の文字列の混じる要素のリストを与えると、全ての要素を整数にして返す関数(例:[1, '2', 3] → [1, 2, 3])


def func(x):
    l = []
    for i in x:
        l.append(int(i))
    return l

def func(x):
    return [ int(i) for i in x]

整数と整数の文字列の混じる要素のリストを与えると、文字列を取り除いたリストを返す関数(例:[1, '2', 3] → [1, 3]

def func(x):
    l = []
    for i in x:
        if isinstance(i, str):
           continue
        l.append(i)
    return l

def func(x):
    return[i for i in x if not isinstance(i, str)] 

3. 無名関数(lambda式)

lambda式を使うと、def文を使わずに関数を定義できます。基本構文は、以下の様です。

lambda 引数処理

具体的な例を記します。

func = lambda x:print('引数は'+ x)
func('整数')

# 出力
引数は整数

lambda式で引数xが設定されている場合は、引数がないとその設定が有効になる。

func = lambda x="未入力": print('引数は' + x)
func('整数')
func()

# 出力
引数は整数
引数は未入力

lambda式を( )で囲って、引数を( )で後ろにくっ付けるやり方もある。

(lambda x="未入力": print('引数は' + x))('整数')
(lambda x="未入力": print('引数は' + x))()

# 出力
引数は整数
引数は未入力
2
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
7