首页 > 编程 > Python > 正文

Python高级编程-13优化:解决方案

2019-11-10 18:47:35
字体:
来源:转载
供稿:网友

在一个有序list中进行二分查找

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) # 2

使用set保存无重复key的list

my_set.py

seq = ['a', 'a', 'b', 'c', 'c', 'd']res = set(seq)PRint res # set(['a', 'c', 'b', 'd'])

deque

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'])

defaultdict

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]

namedtuple

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
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表