Приклади з лекції «Transforming code into Beautiful, Idiomatic Python by Raymond Hettinger»
Цикли в діапазоні чисел
for i in [0,1,2,3,4,5]:
print i**2
for i in range(6):
print i**2
for i in xrange(6):
print i**2
Цикл по колекції
colors = ['red','green','blue','yellow']
for i in range(len(colors)):
print colors[i]
for color in colors:
print color
Зворотній цикл
colors=['red','green','blue','yellow']
for i in range(len(colors)-1,-1,-1):
print colors[i]
for color in reversed(colors):
print color
Цикл за індексами
colors=['red','green','blue','yellow']
for i in range(len(colors)):
print i, '-->', colors[i]
for i, color in enumerate(colors):
print i, '-->', colors[i]
Цикл двох колекцій
names=['raymond','rachel','matthew']
colors=['red','green','blue','yellow']
n = min(len(names), len(colors))
for i in range(n):
print names[i], '-->', colors[i]
for name, color in zip(names, colors):
print name, '-->', color
for name, color in izip(names, colors):
print name, '-->', color
Цикл в певному порядку
colors=['red','green','blue','yellow']
for color in sorted(colors):
print color
for color in sorted(colors, reverse=True):
print color
d = {'matthew':'blue','rachel':'green','raymond':'red'}
for k in d:
print k
for k in d.keys():
if k.startswith('r'):
del d[k]
d = {k : d[k] for k in d if not k.startswith('r')}
Цикл за ключем і значенням словника
d = {'matthew':'blue','rachel':'green','raymond':'red'}
for k in d:
print k, '-->', d[k]
for k, v in d.items():
print k, '-->', v
for k, v in d.iteritems():
print k, '-->', v
Побудова словника з одного або двох списків
names=['raymond','rachel','matthew']
colors=['red','green','blue']
d = dict(izip(names, colors))
{'matthew':'blue','rachel':'green','raymond':'red'}
d = dict(enumerate(names))
{0:'raymond', 1:'rachel', 2:'matthew'}
Підрахунок в словнику
colors=['red','green','red','blue','green','red']
d = {}
for color in colors:
if color not in d:
d[color] = 0
d[color] += 1
{'blue': 1,'green': 2,'red': 3}
d = {}
for color in colors:
d[color] = d.get(color, 0) + 1
d = defaultdict(int)
for color in colors:
d[color] += 1
Групування словників - І
names=['raymond','rachel','matthew','roger',
'betty','melissa','judith','charlie']
d = {}
for name in names:
key = len(name)
if key not in d:
d[key] = []
d[key].append(name)
{5: ['roger','betty'], 6: ['rachel','judith'],
7: ['raymond','matthew','melissa','charlie']}
Групування словників - ІІ
names=['raymond','rachel','matthew','roger',
'betty','melissa','judith','charlie']
d = {}
for name in names:
key = len (name)
d.setdefault(key, []).append(name)
d = defaultdict(list)
for name in names:
key = len(name)
d[key].append(name)
Is a dictionary popitem() atomic?
d = {'matthew':'blue','rachel':'green','raymond':'red'}
while d:
key, value = d.popitem()
print key, '-->', value
Розпакування послідовності
p = 'Raymond','Hettinger', 0x30,'python@example.com'
fname = p[0]
lname = p[1]
age = p[2]
email = p[3]
fname, lname, age, email = p
Оновлення декількох змінних
def fibonacci(n):
x = 0
y = 1
for i in range(n):
print x
t = y
y = x+y
x = t
def fibonacci(n):
x, y = 0, 1
for i in range(n):
print x
x, y = y, x+y
Зчеплення(конкатенація) рядків
names = ['raymond','rachel','matthew','roger',
'betty','melissa','judith','charlie']
s = names[0]
for name in names[1:]:
s += ', ' + name
print s
print ', ' .join(names)
Як відкривати і закривати файли
f = open('data.txt')
try:
data = f.read()
finally:
f.close()
with open('data.txt') as f:
data = f.read()
Списки і генератор виразу
result = []
for i in range(10):
s = i**2
result.append(s)
print sum(result)
print sum([i**2 for i in xrange(10)])
print sum(i**2 for i in xrange(10))
Немає коментарів:
Дописати коментар