ŠŠ¾Š½ŃŠµŠ¹Š½ŠµŃ ā Š¾Š±ŃекŃ, ŠŗŠ¾ŃŠ¾ŃŃŠ¹ ŃŠ¾Š“ŠµŃŠ¶ŠøŃ внŃŃŃŠø ŃŠµŠ±Ń Š“ŃŃŠ³ŠøŠµ Š¾Š±ŃŠµŠŗŃŃ. ТеŃ
Š½ŠøŃŠµŃŠŗŠø Š²ŃŠµ ŠŗŠ¾Š½ŃŠµŠ¹Š½ŠµŃŃ Š½Š°ŃŠ»ŠµŠ“ŃŃŃ Š¾Ń Collections.abc.Container
Š¼ŠµŃŠ¾Š“ __contains__
. Š” ŃŃŠøŠ¼ Š¼ŠµŃŠ¾Š“ом ŃŠ°Š±Š¾ŃŠ°ŠµŃ Š¾ŠæŠµŃŠ°ŃŠ¾Ń in
.
ŠŠ¾Š½ŃейнеŃŃ ŠæŃŠµŠ“ŃŃŠ°Š²Š»ŠµŠ½Ń ŃŠ°Š·Š½Ńми ŃŃŃŃŠŗŃŃŃŠ°Š¼Šø ГаннŃŃ . ŠŠ° ŃŃŠøŃ ŃŃŃŃŠŗŃŃŃŠ°Ń можно поŃŃŃŠ¾ŠøŃŃ Š²ŃŠµŠ²Š¾Š·Š¼Š¾Š¶Š½Ńе абŃŃŃŠ°ŠŗŃŃŠµ ŃŠøŠæŃ ГаннŃŃ .
NB! ŠŠµ наГо ŠæŃŃŠ°ŃŃ ŃŠøŠæŃ ГаннŃŃ ŃŠ¾ ŃŃŃŃŠŗŃŃŃŠ°Š¼Šø ГаннŃŃ Šø абŃŃŃŠ°ŠŗŃŠ½ŃŠ¼Šø ŃŠøŠæŠ°Š¼Šø ГаннŃŃ .
Тип ГаннŃŃ
āĀ Ń
Š°ŃŠ°ŠŗŃŠµŃŠøŃŃŠøŠŗŠ° ŠŗŃŃŠ¾Ńка ГаннŃŃ
, ŠŗŠ¾ŃŠ¾ŃŠ°Ń Š¾ŠæŃŠµŠ“ŠµŠ»ŃŠµŃ ŃŠæŠ¾ŃŠ¾Š± его ŠøŠ½ŃŠµŃŠæŃŠµŃŠ°ŃŠøŠø.
ŠŠ°ŠæŃимеŃ, b1100001
Š¼Š¾Š¶ŠµŃ Š±ŃŃŃ ŠŗŠ°Šŗ ŃŠøŃло 97 (ŃŠµŠ»Ńй ŃŠøŠæ), а Š¼Š¾Š¶ŠµŃ бŃŃŃ ŠŗŠ°Šŗ ŃŠøŠ¼Š²Š¾Š» a
ŠøŠ· ASCII (ŃŠøŠ¼Š²Š¾Š»).
Š”ŃŃŃŠŗŃŃŃŠ° ГаннŃŃ āĀ Š½Š°Š±Š¾Ń ŠøŠ· ŠæŃŠøŠ¼ŠøŃивов ГаннŃŃ Šø Š¾ŠæŠµŃŠ°Ńий наГ ними, Š¾Š³ŃŠ°Š½ŠøŠ·Š¾Š²Š°Š½Š½Ńе Š“Š»Ń ŃŃŃŠµŠŗŃивного ŃŠµŃŠµŠ½ŠøŃ Š·Š°Š“Š°ŃŠø. ŠŠ°ŠæŃимеŃ, маŃŃŠøŠ²) или ŃŠ²ŃŠ·Š½ŃŠ¹ ŃŠæŠøŃŠ¾Šŗ.
ŠŠ±ŃŃŃŠ°ŠŗŃŠ½ŃŠ¹ ŃŠøŠæ ГаннŃŃ (ŠŠ¢Š) āĀ Š¼Š°ŃŠµŠ¼Š°ŃŠøŃŠµŃŠŗŠ°Ń Š¼Š¾Š“ŠµŠ»Ń ŃŃŃŃŠŗŃŃŃŃ Š“Š°Š½Š½ŃŃ , ее ŠøŠ½ŃеŃŃŠµŠ¹Ń. ŠŠ°ŠæŃимеŃ, Š¾ŃŠµŃŠµŠ“Ń ā Š°Š±ŃŃŃŠ°ŠŗŃŠ½ŃŠ¹ ŃŠøŠæ ГаннŃŃ , ŠŗŠ¾ŃŠ¾ŃŃŠ¹ можно ŃŠµŠ°Š»ŠøŠ·Š¾Š²Š°ŃŃ Š½Š° ŃŠ°Š·Š½ŃŃ ŃŃŃŃŠŗŃŃŃŠ°Ń ГаннŃŃ .
Š Python ŠæŃŠøŃваивание =
копиŃŃŠµŃ ŃŠ¾Š»Ńко ŃŃŃŠ»ŠŗŠø Š¾Š±ŃŠµŠŗŃов. Š Š¾ŠæŃŠµŠ°ŃŠøŃ Š²ŠøŠ“Š° name = obj
можно ŠøŠ½ŃŠµŃŠæŃŠµŃŠøŃоваŃŃ ŠŗŠ°Šŗ ŠæŃŠøŃваивание Š¾Š±ŃекŃŃ obj
имени name
. ŠŠ°Šŗ в ŃŠ°ŠŗŠ¾Š¼ ŃŠ»ŃŃŠ°Šµ ŃŠŗŠ¾ŠæŠøŃоваŃŃ Š¾Š±ŃŠµŠŗŃ?
ŠŠ»Ń ŠæŃŠøŠ¼ŠµŃа, Š“Š°Š²Š°Š¹ŃŠµ ŠæŠ¾ŠæŃŠ¾Š±Ńем ŃŠŗŠ¾ŠæŠøŃоваŃŃ ŃŠæŠøŃŠ¾Šŗ ŃŠæŠøŃŠŗŠ¾Š².
# ŠŃŠøŠ¼ŠµŃ ŃŠæŠøŃŠŗŠ° ŃŠæŠøŃŠŗŠ¾Š²
a = [1,2,3]
b = [4,5,6]
c = [a,b] # ŃŠ¾Š“ŠµŃŠ¶ŠøŃ ŃŃŃŠ»ŠŗŠø на a Šø b
ŠŃли Š¼Ń ŃŠæŠøŃŠ¾Šŗ c
ŠæŃŠøŃвоим ŃŠæŠøŃŠŗŃ d
, ŃŠ¾ по ŃŠ°ŠŗŃŃ Ń ŃŠæŠøŃŠŗŠ° [a,b]
ŠæŃŠ¾ŃŃŠ¾ Š±ŃŠ“ŠµŃ Š“Š²Š° имение c
Šø d
.
# ŠŠ°Š²ŠµŃиваем новое ŠøŠ¼Ń ŃŠæŠøŃŠŗŃ Ń (Ń Š¾Š±ŠµŃŠµŠŗŃов Š“Š°Š¾Š»Š¶Š½Ń Š±ŃŃŃ Š¾Š“ŠøŠ½Š°ŠŗŠ¾Š²ŃŠµ id)
d = c
id(c), id(d)
ŠŠ¾Š¶Š½Š¾ ŃŠŗŠ¾ŠæŠøŃоваŃŃ ŃŠæŠøŃŠ¾Šŗ, ŃŠ¾Š·Š“ав ŃŠ²Š½Š¾ Š½Š¾Š²ŃŠ¹ Ń ŃŠ¾Š“ŠµŃŠ¶ŠøŠ¼Ńм ŃŃŠ°Ńого. ŠŃŠø ŃŃŠ¾Š¼ ŠæŃŠ¾ŠøŃŃ Š¾Š“ŠøŃ ŠæŠ¾Š²ŠµŃŃ Š½Š¾ŃŃŠ½Š¾Šµ ŠŗŠ¾ŠæŠøŃŠ¾Š²Š°Š½ŠøŠµ ŃŠæŠøŃŠŗŠ°. ŠŠ»ŠµŠ¼ŠµŠ½ŃŃ ŃŠŗŠ°Š·ŃваŃŃ Š½Š° ŃŠ»ŠµŠ¼ŠµŠ½ŃŃ ŃŃŠ°Ńого ŃŠæŠøŃŠŗŠ°.
# ŠŠ¾Š²ŠµŃŃ
ноŃŃŠ½Š¾Šµ ŠŗŠ¾ŠæŠøŃŠ¾Š²Š°Š½ŠøŠµ ŃŠæŠøŃŠŗŠ° (ŃŠæŠøŃŠŗŠø ŃŠ°Š·Š½Ńе, но внŃŃŃŠµŠ½Š½ŠøŠµ Š¾Š±ŃŠµŠŗŃŃ Š½ŠµŃ)
d = list(c)
id(c), id(d), id(c[0]), id(d[0])
Š Š°Š·Š»ŠøŃŠ°ŃŃ Š“Š²Š° ŃŠøŠæŠ° ŠŗŠ¾ŠæŠøŃŠ¾Š²Š°Š½ŠøŃ:
Š Š¾ŃŠ»ŠøŃŠøŠø Š¾Ń ŠæŠ¾Š²ŠµŃŃ Š½Š¾ŃŃŠ½Š¾Š³Š¾ ŠŗŠ¾ŠæŠøŃŠ¾Š²Š°Š½ŠøŃ, Š³Š»ŃŠ±Š¾ŠŗŠ¾Šµ Š¾Š±Ń Š¾Š“ŠøŃ Š¾Š±ŃŠµŠŗŃ ŃŠµŠŗŃŃŃŠøŠ²Š½Š¾ Šø копиŃŃŠµŃ Š²ŃŠµ ŠæŠ¾Š“Š¾Š±ŃŠµŠŗŃŃ.
# ŠŠ»Ńбокое ŠŗŠ¾ŠæŠøŃование ŃŠæŠøŃŠŗŠ°
from copy import deepcopy
d = deepcopy(c)
id(c), id(d), id(c[0]), id(d[0])
ŠŃŃŃŠ¾ŠµŠ½Š½Ńе в Python-ŠŗŠ¾Š½ŃŠµŠ¹Š½ŠµŃŃ Š¼Š¾Š¶Š½Š¾ ŃŠ°Š·Š“елиŃŃ Š½Š° Гве ŠŗŠ°ŃŠµŠ³Š¾ŃŠøŠø:
string
, tuple
, range
, frozenset
, bytes
list
, dict
, set
, bytearray
# ŠŃŃŃŠ¾ŠµŠ½Š½Ńе ŠŗŠ¾Š½ŃейнеŃŃ:
c_str = "ŠŠ“Ń Š² магазин в Š³Š¾ŃоГе ДанкŃ-ŠŠµŃŠµŃŠ±ŃŃŠ³Šµ"
c_tpl = (1, 1.2, "Ń")
c_rng = range(10)
c_fst = frozenset({1,2,3}) # readonly set
c_bts = bytes((3,1,4,5,1,5))
c_lst = [1,2,3]
c_dct = {1: "Sex", 2: "Drugs", 3: "Rock-and-Roll"}
c_set = {1,2,3}
c_bar = bytearray((3,1,4,5,1,5)) # writable bytes
Š ŃŠ°Š±Š»ŠøŃе ŠæŃŠøŠ²ŠµŠ“ŠµŠ½Ń Š½ŠµŠŗŠ¾ŃŠ¾ŃŃŠµ ŠæŠ¾ŠæŃŠ»ŃŃŠ½Ńе вŃŃŃŠ¾ŠµŠ½Š½Ńе ŠŗŠ¾Š½ŃейнеŃŃ Šø Š½ŠµŠŗŠ¾ŃŠ¾ŃŃŠµ Š¾ŠæŠµŃŠ°ŃŠøŠø наГ ними Ń Š°ŃŠøŠ¼ŠæŃŠ¾ŃŠøŃŠµŃŠŗŠ¾Š¹ ŃŠ»Š¾Š¶Š½Š¾ŃŃŃŃ.
ŠŠ±ŃекŃŃ Š² Python могŃŃ Š±ŃŃŃ Ń
ŃŃŠøŃŃŃŠµŠ¼Ńе āĀ ŃŠ°ŠŗŠøŠ¼ Š¾Š±ŃŠµŠŗŃам ŃŠ¾ŠæŠ¾ŃŃŠ°Š²Š»ŃеŃŃŃ Š½ŠµŠŗŠ¾ŃŠ¾Ńое ŃŠøŃло (Ń
ŃŃ), ŠŗŠ¾ŃŠ¾Ńое не Š¼ŠµŠ½ŃеŃŃŃ Š² ŃŠµŃении ŃŃŃŠµŃŃŠ²Š¾Š²Š°Š½ŠøŃ Š¾Š±ŃŠµŠŗŃа. Š„ŃŃŠø ŠøŃŠæŠ¾Š»ŃŠ·ŃŃŃŃŃ Š“Š»Ń ŃŃŠ°Š²Š½ŠµŠ½ŠøŃ ŠŗŠ»ŃŃŠµŠ¹ в ŃŠ»Š¾Š²Š°ŃŃŃ
Šø множеŃŃŠ²Š°Ń
. ТеŃ
Š½ŠøŃŠµŃŠŗŠø, Ń Ń
ŃŃŠøŃŃŠµŠ¼ŃŃ
Š¾Š±ŃŠµŠŗŃов ŃŠµŠ°Š»ŠøŠ·Š¾Š²Š°Š½ Š¼ŠµŃŠ¾Š“ __hash__()
.
NB! ŠŃли ŠŗŠ¾Š½ŃŠµŠ¹Š½ŠµŃ Šø его ŃŠ»ŠµŠ¼ŠµŠ½ŃŃ Š½ŠµŠøŠ·Š¼ŠµŠ½ŃŠµŠ¼Ńе, ŃŠ¾ он Ń ŃŃŠøŃŃŠµŠ¼Ńй.
# Š„ŃŃŠøŃŃŠµŠ¼Ńй коŃŃŠµŠ¶
hash((1,3,()))
# ŠŠµŃ
ŃŃŠøŃŃŠµŠ¼Ńй коŃŃŠµŠ¶ (Голжна бŃŃŃ Š¾ŃŠøŠ±ŠŗŠ°)
hash((1,3,[]))
ŠŠøŠ¶Šµ ŠæŃŠøŠ²ŠµŠ“ŠµŠ½Ń Š½ŠµŠŗŠ¾ŃŠ¾ŃŃŠµ ŠŗŠ¾Š½ŃŠµŠ¹Š½ŠµŃŃ ŠøŠ· ŃŃŠ°Š½Š“аŃŃŠ½Š¾Š¹ Š±ŠøŠ±Š»ŠøŠ¾ŃŠµŠŗŠø ŃŠ¾ ŃŠæŠµŃŠøŠ°Š»ŃŠ½ŃŠ¼ Š½Š°Š·Š½Š°ŃŠµŠ½ŠøŠµŠ¼.
# ŠŃŠøŠ¼ŠµŃ ŠøŠ¼ŠµŠ½Š¾Š²Š°Š½Š½Š¾Š³Š¾ коŃŃŠµŠ¶Š°
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1,2)
# Š ŠæŠ¾Š»ŃŠ¼ namedtuple можно Š¾Š±ŃаŃаŃŃŃŃ ŃŠµŃез ŃŠ¾ŃŠŗŃ.
p.x
# Также можно ŃŠøŃаŃŃ ŠŗŠ°Šŗ обŃŃŠ½Ńй коŃŃŠµŠ¶.
p[0]
# ŠŃŠµŃŠøŃование по ŠøŠ¼ŠµŠ½Š¾Š²Š°Š½Š½Š¾Š¼Ń коŃŃŠµŠ¶Ń
for x in p:
print(x)
# ŠŠ¼ŠµŠ½Š¾Š²Š°Š½Š½Ńй коŃŃŠµŠ¶ āĀ Š½ŠµŠøŠ·Š¼ŠµŠ½ŃŠµŠ¼Ńй Š¾Š±ŃŠµŠŗŃ (Голжна бŃŃŃ Š¾ŃŠøŠ±ŠŗŠ°)
p.x = 4
NB! namedtuple
ŃŠ“обно ŠøŃŠæŠ¾Š»ŃŠ·Š¾Š²Š°ŃŃ Š“Š»Ń Š²Š¾Š·Š²ŃŠ°Ńа ГаннŃŃ
ŠøŠ· ŃŃŠ½ŠŗŃий.
Update: Š Python 3.7 ŃŠ¶Šµ не акŃŃŠ°Š»Ńно. Š”ŃŠ°Š½Š“аŃŃŠ½Ńй dict
Š³Š°ŃŠ°Š½ŃŠøŃŃŠµŃ поŃŃŠ“ок.
dict
не Š³Š°ŃŠ°Š½ŃŠøŃŃŠµŃ, ŃŃŠ¾ Š±ŃŠ“ŠµŃ Ń
ŃŠ°Š½ŠøŃŃ ŠŗŠ»ŃŃŠø в ŃŠ¾Š¼ поŃŃŠ“ке, в ŠŗŠ¾ŃоŃом Š²Ń ŠøŃ
заГали. ŠŃли важно полŃŃŠøŃŃ ŠøŠ· d.keys()
Š¾ŃŠøŠ³ŠøŠ½Š°Š»ŃŠ½ŃŠ¹ поŃŃŠ“ок, ŃŠ¾ Š“Š»Ń ŃŃŠ¾Š³Š¾ еŃŃŃ OrderedDict
.
# ŠŠæŠµŃŠ°ŃŠøŃ ŃŠµŠ²ŠµŃŃŠ° на ŃŠ»Š¾Š²Š°Ńе Š±ŠµŃмŃŃŠ»ŠµŠ½Š½Š° ā ŠæŠ¾ŃŃŠ“ка Š½ŠµŃ (Голжна бŃŃŃ Š¾ŃŠøŠ±ŠŗŠ°)
dict_std = {"a": 1, "b": 2, "c": 3}
[k for k in reversed(dict_std)]
# Š Š°Š±Š¾ŃŠøŠ¹ workaround в Python 3.7+
dict_std = {"a": 1, "b": 2, "c": 3}
[k for k in reversed(list(dict_std.keys()))]
# OrderedDict ŠæŃŠµŠ“ŠæŠ¾Š»Š°Š³Š°ŠµŃ Š½Š°Š»ŠøŃŠøŠµ поŃŃŠ“ка, можно ŠæŠµŃŠµŠ²ŠµŃнŃŃŃ
from collections import OrderedDict
dict_odr = OrderedDict({"a": 1, "b": 2, "c": 3})
[k for k in reversed(dict_odr)]
ŠŃли Š¾Š±ŃŠ°ŃŠøŃŃŃŃ Šŗ ŠŗŠ»ŃŃŃ ŃŠ»Š¾Š²Š°ŃŃ, ŠŗŠ¾ŃŠ¾Ńого неŃ, ŃŠ¾ Š±ŃŠ“ŠµŃ Š¾ŃŠøŠ±ŠŗŠ°.
# ŠŠ±ŃŃŠ½Ńй ŃŠ»Š¾Š²Š°ŃŃ ŃŃŠ³Š°ŠµŃŃŃ Š½Š° полŃ, ŠŗŠ¾ŃŠ¾ŃŃŃ
Š½ŠµŃ (Голжна бŃŃŃ Š¾ŃŠøŠ±ŠŗŠ°)
d = {}
d["4"]
ŠŃли наГо какое-ŃŠ¾ повеГение по-ŃŠ¼Š¾Š»ŃаниŃ, ŃŠ¾ Š“Š»Ń ŃŃŠ¾Š³Š¾ ŃŠ“обно ŠøŃŠæŠ¾Š»ŃŠ·Š¾Š²Š°ŃŃ defaultdict
.
# ŠŃŠøŠ¼ŠµŃ Ń defaultdict, ŠŗŠ»ŃŃŃ ŠæŠ¾-ŃŠ¼Š¾Š»ŃŠ°Š½ŠøŃ ŠæŃŠøŃваеŃŃŃ 0.
from collections import defaultdict
s = 'Ń Š·Š°Š»ŠøŠ²Š°Ń Š³Š»Š°Š·Š° ŠŗŠµŃŠ¾Ńином'
d = defaultdict(int)
for k in s:
d[k] += 1 # без defaultdict зГеŃŃ Š½Š°Š“Š¾ Š±ŃŠ»Š¾ Š±Ń ŠøŠ½ŠøŃŠøŠ°Š»ŠøŠ·ŠøŃоваŃŃ ŠŗŠ»ŃŃŠø ŃŠ²Š½Š¾
sorted(d.items(), key=lambda x: x[1], reverse=True)
ChainMap
Ń
ŃŠ°Š½ŠøŃ ŃŃŃŠ»ŠŗŠø на Š“ŃŃŠ³ŠøŠµ ŃŠ»Š¾Š²Š°ŃŠø. ŠŠ¾Š½ŃŠµŠ¹Š½ŠµŃ ŠæŠ¾Š·Š²Š¾Š»ŃŠµŃ ŃŠ°Š±Š¾ŃаŃŃ Ń Š²Š½ŃŃŃŠµŠ½Š½ŠøŠ¼Šø ŃŠ»Š¾Š²Š°ŃŃŠ¼Šø как Ń Š¾Š“Š½ŠøŠ¼ ŃŠµŠ»Ńм ŃŠ»Š¾Š²Š°Ńем.
Š£ ChainMap
еŃŃŃ Š“Š²Š° ŃŃŠ°Š“ŠøŃŠøŠ¾Š½Š½ŃŃ
ŠæŃŠøŠ»Š¾Š¶ŠµŠ½ŠøŃ:
# ŠŃŠøŠ¼ŠµŃ Ń ChainMap: ŠæŠ¾ŠøŃŠŗ по Š“Š²ŃŠ¼ ŃŠ»Š¾Š²Š°ŃŃŠ¼
from collections import ChainMap
group1 = {"a": 1, "b": 2}
group2 = {"c": 3, "d": 4}
groups = ChainMap(group1, group2)
groups["d"], groups["b"]
ŠŠ“еŃŃ group1
Š¼Š¾Š¶ŠµŃ Š±ŃŃŃ ŃŠ»Š¾Š²Š°ŃŃŠ¼ ŠæŠ°ŃŠ°Š¼ŠµŃŃŠ¾Š², а group2
ā ŃŠ»Š¾Š²Š°ŃŃŠ¼ Š·Š½Š°ŃŠµŠ½ŠøŠ¹ ŠæŠ°ŃŠ°Š¼ŠµŃŃŠ¾Š² по-ŃŠ¼Š¾Š»ŃаниŃ. ŠŃли Š·Š½Š°ŃŠµŠ½ŠøŃ Š½ŠµŃ Š² group1
, ŃŠ¾ Š²ŠµŃŠ½ŃŃŃŃ Š·Š½Š°ŃŠµŠ½ŠøŠµ ŠøŠ· group2
.
# ŠŃŠøŠ¼ŠµŃ ŃŠ»Š¾Š²Š°ŃŃ, в ŠŗŠ¾ŃоŃŃŠ¹ Š½ŠµŠ»ŃŠ·Ń ŠæŠøŃŠ°ŃŃ
from types import MappingProxyType
d = {"a": 1, "b": 2} # ŠŠ±ŃŃŠ½Ńй ŃŠ»Š¾Š²Š°ŃŃ
d_ro = MappingProxyType(d) # MappingProxyType (Read Only)
d_ro["a"]
# ŠŠ°ŠæŠøŃаŃŃ Š² MappingProxyType Š½ŠµŠ»ŃŠ·Ń (Голжна бŃŃŃ Š¾ŃŠøŠ±ŠŗŠ°)
d_ro["a"] = 1
ŠŃŠ»ŃŃŠøŠ¼Š½Š¾Š¶ŠµŃŃŠ²Š¾ ā множеŃŃŠ²Š¾, ŃŠ»ŠµŠ¼ŠµŠ½ŃŃ Š² ŠŗŠ¾ŃŠ¾Ńом могŃŃ ŠæŠ¾Š²ŃŠ¾ŃŃŃŃŃŃ.
# ŠŃŠøŠ¼ŠµŃ ŠæŠ¾ŃŃŃŠ¾ŠµŠ½ŠøŃ Š¼ŃŠ»ŃŃŠøŠ¼Š½Š¾Š¶ŠµŃŃŠ²Š° по ŠøŃŠµŃŠøŃŃŠµŠ¼Š¾Š¼Ń Š¾Š±ŃŠµŠŗŃŃ (ŃŃŃŠ¾ŠŗŠµ)
from collections import Counter
s = 'Ń Š·Š°Š»ŠøŠ²Š°Ń Š³Š»Š°Š·Š° ŠŗŠµŃŠ¾Ńином'
c = Counter(s)
c
# sum āĀ ŠŗŠ¾Š»ŠøŃŠµŃŃŠ²Š¾ ŃŠ»ŠµŠ¼ŠµŠ½Ńов в множеŃŃŠ²Šµ,
# len - ŠŗŠ¾Š»ŠøŃŠµŃŃŠ²Š¾ ŃŠ½ŠøŠŗŠ°Š»ŃнŃŃ
ŃŠ»ŠµŠ¼ŠµŠ½Ńов в множеŃŃŠ²Šµ
sum(c.values()), len(c.values())
Š Š¾ŃŠµŃŠµŠ“Ń Šø ŃŃŠµŠŗ можно ŃŠµŠ°Š»ŠøŠ·Š¾Š²Š°ŃŃ Š½Š° list
. ŠŠ¾ list
ŃŠµŠ°Š»ŠøŠ·Š¾Š²Š°Š½ на Š“ŠøŠ½Š°Š¼ŠøŃŠµŃком маŃŃŠøŠ²Šµ, а deque
на ŃŠ²Ńзном ŃŠæŠøŃŠŗŠµ.
# ŠŃŠøŠ¼ŠµŃ Š“Š²ŃŃŃŠ¾Ńонней Š¾ŃеŃеГи
from collections import deque
d = deque()
d.append("Ń")
d.append("ŠøŠ“Ń")
d.append("Š±ŃŠ°ŃŃ")
d.append("Š»ŃŃ")
d.popleft(), d.pop()
# ŠŃимеŃ
from heapq import heappush, heappop
q = []
heappush(q, (3, "ŠŃŠ¾Š“Š°ŠŗŃŠµŠ½"))
heappush(q, (1, "Чпок"))
heappush(q, (2, "Чпок"))
heappop(q),heappop(q),heappop(q)
ŠŠ¾Š³Š“а Š½Ńжен ŠøŠ·Š¼ŠµŠ½ŃемŃй namedtuple
, ŃŠ¾ поГŃ
Š¾Š“ŠøŃ dataclasses
.
# ŠŃŠøŠ¼ŠµŃ Ń ŃŠ¾Š±ŃŃŠ²ŠµŠ½Š½Ńм dataclass
from dataclasses import dataclass
@dataclass
class Structure:
name: str
value: float
@property
def square(self) -> float:
return self.value * self.value
s = Structure("Ń", 2)
s.square
ŠŠ¾-ŃŠ¼Š¾Š»ŃŠ°Š½ŠøŃ dataclass
Š³ŠµŠ½ŠµŃŠøŃŃŠµŃ 3 ГанГеŃ-Š¼ŠµŃŠ¾Š“а (Š¼ŠµŃŠ¾Š“ Ń Š“Š²Š¾Š¹Š½ŃŠ¼ ŠæŠ¾Š“ŃŠµŃкиванием):
init
,repr
,eq
.Š§ŠµŃŠµŠ· Š¾ŠæŃŠøŠø Š“ŠµŠŗŠ¾ŃŠ°ŃŠ¾ŃŠ° можно ŃŠ“елаŃŃ dataclass
immutable (frozen
), mutable-Ń
ŃŃŠøŃŃŠµŠ¼Ńм (unsafe_hash
) Šø ŃŃŠ°Š²Š½ŠøŠ²Š°ŠµŠ¼Ńм (order
).
%load_ext watermark
%watermark -d -u -v -iv