a) smart_person
b) SMART_PERSON
c) smartPerson
d) SmartPerson
Само чрез него методите имат достъп до полетата на обекта
Като дефинираме метод __gt__(self, other)
Като дефинираме __int__(self)
Когато не знаем какво да правим с данните, ги слагаме в колекции.
range връща итеруемо
numbers = range(3)
iterator = iter(numbers)
next(iterator) # 0
next(iterator) # 1
next(iterator) # 2
next(iterator) # StopIteration
Итераторите могат да се итерират
numbers = [1, 2, 3]
iter(numbers) is iter(numbers) # False
iterator = iter(numbers)
iter(iterator) is iterator # True
Ако искате опашка (queue, FIFO buffer) можете да ползвате списък?
orders = []
def add_order(items):
orders.append(items)
def get_order():
return orders.pop(0)
add_order(('бира', 'шкембе'))
add_order(('цаца', 'картофки'))
print(get_order().join('; ')) # бира, шкембе
from collections import deque
orders = deque()
def add_order(items):
orders.append(items)
def get_order():
return orders.popleft()
add_order(('бира', 'шкембе'))
add_order(('цаца', 'картофки'))
print(get_order().join('; ')) # бира, шкембе
bad_words = ['x','y','z']
def count_bad_words(text):
word_counts = {}
for word in text.split(' '):
if word in bad_words:
if word in word_counts:
word_counts[word] += 1
else:
word_counts[word] = 1
return word_counts
Речник със стойност по подразбиране
from collections import defaultdict
bad_words = ['x','y','z']
def count_bad_words(text):
word_counts = defaultdict(int)
for word in text.split(' '):
word_counts[word] += 1
return word_counts
Още по-лесно - collections.Counter.
[израз for променлива in поредица if условие]
>>> [x * x for x in range(0, 10)]
[1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> [x * x for x in range(0, 10) if x % 2]
[1, 9, 25, 49, 81]
Един list comprehension може да се вложи в друг
>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
>>> import math
>>> {int(math.sqrt(x)) for x in range(1,100)}
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> {i : chr(65+i) for i in range(10)}
{0: 'A', 1: 'B', 2: 'C', 3: 'D', 4: 'E', 5: 'F', 6: 'G', 7: 'H', 8: 'I', 9: 'J'}
>>> import itertools
>>> help(itertools)