Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
import heapq
def lazy_sort(iterable):
lst = list(iterable)
heapq.heapify(lst)
while lst:
yield heapq.heappop(lst)
print "".join([c for c in lazy_sort(u"абракадабра")])
аааааббдкррdef permutations(items):
def p(items, n):
if n == 0:
yield []
else:
for i in range(n):
for j in p(items[:i] + items[i+1:], n - 1):
yield [items[i]] + j
return p(items, len(items))
k = 0
for i in permutations(range(10)):
if k >= 5:
break
print i
k += 1
k = 0
for i in permutations(range(10)):
if k >= 5:
break
print i
k += 1
list(islice(permutations(range(10)), 5))
# -*- coding: rot13 -*-
vzcbeg urncd
qrs ynml_fbeg(vgrenoyr):
yfg = yvfg(vgrenoyr)
urncd.urncvsl(yfg)
juvyr yfg:
lvryq urncd.urnccbc(yfg)
cevag "".wbva([p sbe p va ynml_fbeg(h"dhrdjrdjr")])
>>> type(True), type(False)
(<type 'bool'>, <type 'bool'>)>>> 1 is 1
True
>>> 1 is True
False
>>> 0 is 0
True
>>> 0 is False
False
А как вы представляете себе хранение bool значения не в виде 0/1?Видели, например, erlang или ocaml.
>>> def f1():
... a, b = 0, 1
... b, a = a, b
...
>>> def f2():
... a, b = 0, 1
... c = a
... a = b
... b = c
...
>>> dis.dis(f1)
2 0 LOAD_CONST 3 ((0, 1))
3 UNPACK_SEQUENCE 2
6 STORE_FAST 0 (a)
9 STORE_FAST 1 (b)
3 12 LOAD_FAST 0 (a)
15 LOAD_FAST 1 (b)
18 ROT_TWO
19 STORE_FAST 1 (b)
22 STORE_FAST 0 (a)
25 LOAD_CONST 0 (None)
28 RETURN_VALUE
>>> dis.dis(f2)
2 0 LOAD_CONST 3 ((0, 1))
3 UNPACK_SEQUENCE 2
6 STORE_FAST 0 (a)
9 STORE_FAST 1 (b)
3 12 LOAD_FAST 0 (a)
15 STORE_FAST 2 ©
4 18 LOAD_FAST 1 (b)
21 STORE_FAST 0 (a)
5 24 LOAD_FAST 2 ©
27 STORE_FAST 1 (b)
30 LOAD_CONST 0 (None)
33 RETURN_VALUE
>>> dict(a=1, b=2, c=3)
{'a': 1, 'c': 3, 'b': 2}
>>> list(enumerate('abc'))
[(0, 'a'), (1, 'b'), (2, 'c')]
>>> dict(list(enumerate('abc')))
{0: 'a', 1: 'b', 2: 'c'}
>>> "Вес {weight} кг, цена {price} руб".format(weight=1, price=2)
'Вес 1 кг, цена 2 руб'>>> head, *tail = list(range(5))
>>> head
0
>>> tail
[1, 2, 3, 4]
>>> dict(enumerate('abc'))
{0: 'a', 1: 'b', 2: 'c'}
Метод format у строк
>>> "Вес {weight} кг, цена {price} руб".format(weight=1, price=2)
'Вес 1 кг, цена 2 руб'
'Вес %(weight)d кг, цена %(price)d руб' % {'weight' : 1, 'price' : 2}
Python-неизвестный