マージ(|)と更新(|=)
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']