2021-03-11に投稿

Pythonの式

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)
# =&gt; 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 剰余
Originally published at marusankakusikaku.jp
ツイッターでシェア
みんなに共有、忘れないようにメモ

maru3kaku4kaku

Pythonこつこつ学習中。よく忘れる。

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント