Pythonの式
Publish date: 2021-03-01
Last updated: 2021-03-01
Last updated: 2021-03-01
Pythonの式(expression)について解説します。
リスト、タプル、集合、辞書
リスト、タプル、集合、辞書は括弧を使って表現できる。
list_sample = [1, 2, 3]
tuple_sample = (1, 2, 3)
set_sample = {1 , 2, 3}
dictionary_sample = {1:"one", "two":2, 3:3, "four":"four"}
添字表記
リスト、タプル、辞書等の添字表記をサポートするオブジェクトに対して、 角括弧内にキーを指定して値を取得できる。
list_sample[0] # => 1
tuple_sample[1] # => 2
dictionary_sample["two"] # => 2
スライス表記 (slicing)
文字列、タプル、リスト等のシーケンスオブジェクトに対して要素の指定範囲を取得できます。
以下のように:
で数字を区切って表現できます。
- sequence[lower_bound:upper_bound]
- sequence[lower_bound:upper_bound:stride]
sequence = [x for x in range(1,20)]
sequence[:] # => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
sequence[2:] # => [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
sequence[:17] # => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
sequence[2:17] # => [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
sequence[2:17:4] # => [3, 7, 11, 15]
条件式
number = 1
str = "not zero" if number != 0 else "zero"
# => not zero
ラムダ式
f = lambda x, y : x + y
print(f(1,2))
# => 3
比較
比較演算の結果はブール値TrueまたはFalseになる。
print(1 < 2) #=> True
print(1 <= 2) #=> True
print(1 > 2) #=> False
print(1 >= 2) #=> False
print(1 == 2) #=> False
print(1 != 2) #=> True
str = "abc"
print(str is None) #=> False
print(str is not None) #=> True
print("b" in str) #=> True
print("x" not in str) #=> True
ブール演算
print(True and True) # => True
print(True and False) # => False
print(True or True) # => True
print(True or False) # => True
print(not True) # => False
print(not False) # => True
and、orは最後に評価した引数を返却する。
def f(s):
return s or "default"
print(f("a")) # => a
print(f("")) # => default
print(f(None)) # => default
def f(n):
return n or 1
print(f(5)) # => 5
print(f(0)) # => 1
print(f(None)) # => 1
ジェネレータ式
まるかっこでジェネレータを表現できる。
g = (x**2 for x in range(3))
for x in g:
print(x)
#=> 0, 1, 4
Yield式
yieldでジェネレータ 関数を定義できる。
def g():
yield 1
yield 2
yield 3
for x in g():
print(x)
# => 1, 2, 3
べき乗演算
アスタリスク*
を2回重ねてべき乗を表現する。
2 ** 10 # => 1024 pow(2,10)と同じ
2 ** -3 # => 0.125 pow(2,-3)と同じ
ビットの単項演算と反転
b1 = 0b0101
bin(+b1) # => '0b101'
b2 = -b1
bin(b2) # => '-0b101'
b3 = ~b1
bin(b3) # => '-0b110'
bin(-(b1+1)) # => '-0b110' 反転~は+1して符号を変えたものと同じ
bin(b1+b3+0b1) # => 0b0'
ビットのシフト演算
b1 = 0b0101
print(bin(b1 << 2)) # => 0b10100
print(bin(b1 >> 2)) # => 0b1
ビット単位の演算
b1 = 0b0101
b2 = 0b1100
print(bin(b1 & b2)) # => 0b100 AND
print(bin(b1 | b2)) # => 0b1101 XOR
print(bin(b1 ^ b2)) # => 0b1001 OR
二項算術演算
1 + 2 #=> 3 足し算
3 - 1 #=> 2 引き算
2 * 3 #=> 6 掛け算
17 / 5 #=> 4.4 除算
17 // 5 #=> 3 切り捨て除算
17 % 5 #=> 2 剰余