find.py
from bisect import bisectdef find(seq, el): pos = bisect(seq, el) if pos == 0 or (pos == len(seq) and seq[-1] != el): return -1 return pos - 1seq = [2, 3, 7, 8, 9]find(seq, 9) # 4find(seq, 10) # -1find(seq, 0) # -1find(seq, 7) # 2my_set.py
seq = ['a', 'a', 'b', 'c', 'c', 'd']res = set(seq)PRint res # set(['a', 'c', 'b', 'd'])my_deque.py
from collections import dequed = deque()d.append('1')d.append('2')d.append('3')print d # deque(['1', '2', '3'])print len(d) # 3print d[0] # 1print d[-1] # 3d.pop()d.popleft()print d # deque(['2'])d.extendleft(['1', '0'])d.extend(['3', '4', '5'])print d # deque(['0', '1', '2', '3', '4', '5'])my_defaultdict.py
from collections import defaultdictclass Person(object): def __init__(self, name, age): self.name = name self.age = age def __str__(self): return self.name def __repr__(self): return self.namepersons = [Person('bob', 20), Person('jack', 20), Person('mary', 22)]persons_by_age = defaultdict(list)for person in persons: persons_by_age[person.age].append(person)for k, v in persons_by_age.items(): print ':'.join([str(k), str(v)])# 20:[bob, jack]# 22:[mary]my_namedtuple.py
Bob = ('bob', 30, 'male')print 'Representation:', Bob # Representation: ('bob', 30, 'male')Jane = ('Jane', 29, 'female')print 'Field by index:', Jane[0] # Field by index: Janefor people in [Bob, Jane]: print "%s is %d years old %s" % people# bob is 30 years old male# Jane is 29 years old femalefrom collections import namedtuplePerson = namedtuple('Person', 'name age gender')print 'Type of Person:', type(Person) # Type of Person: <type 'type'>Bob = Person(name='Bob', age=30, gender='male')print 'Representation:', Bob # Representation: Person(name='Bob', age=30, gender='male')Jane = Person(name='Jane', age=29, gender='female')print 'Field by Name:', Jane.name # Field by Name: Janefor people in [Bob, Jane]: print "%s is %d years old %s" % people# Bob is 30 years old male# Jane is 29 years old female新闻热点
疑难解答