茨の道も一歩から

インフラ構築からプログラミング(Python・JavaScript)までITに関するブログです。

Python入門:Python3.9新機能

マージ(|)と更新(|=)

d1 = {'A': 'a', 'B': 'b', 'C': 'c'}
d2 = {'B': 'bb', 'C': 'cc', 'D': 'dd'}

d1 | d2
# {'A': 'a', 'B': 'bb', 'C': 'cc', 'D': 'dd'}
print(d1)
# {'A': 'a', 'B': 'b', 'C': 'c'}

d2 | d1
# {'B': 'b', 'C': 'c', 'D': 'dd', 'A': 'a'}
print(d2)
# {'B': 'bb', 'C': 'cc', 'D': 'dd'}

d1 |= d2
# {'A': 'a', 'B': 'bb', 'C': 'cc', 'D': 'dd'}
print(d1)
# {'A': 'a', 'B': 'bb', 'C': 'cc', 'D': 'dd'}

removeprefixとremovesuffix

s = 'FooBarFoo'
s.removeprefix('Foo')
# BarFoo
s.removesuffix('Foo')
# FooBar

最大公約数(math.gcd)と最小公倍数(math.lcm)

import math

math.gcd(4, 10)
# 2
math.gcd(*[4, 8, 12])
# 4

math.lcm(4, 10, 5)
# 20

graphlib

import graphlib

G = graphlib.TopologicalSorter()
G.add('b', 'a')
G.add('c', 'a')
G.add('d', 'b', 'c')
G.prepare()
visit = G.get_ready()
# ('a',)
G.done(*visit)
visit = G.get_ready()
# ('b', 'c')
G.done(*visit)
G.is_active()
# True
visit = G.get_ready()
# ('d',)
G.done(*visit)
G.is_active()
# False

static_order()

import graphlib

G = graphlib.TopologicalSorter()
G.add('b', 'a')
G.add('c', 'b')
G.add('d', 'a')
G.add('e', 'c', 'd')
[x for x in G.static_order()]
# ['a', 'b', 'd', 'c', 'e']