这本书还是月初的时候翻了翻,看了前十章左右就发现这本书写的比较烂,翻译地就更烂了,讲的内容其实没有抓住重点。

下面是看的时候记得几小段代码:

 #首字母相同的男生女生
girls = ['alice', 'bernice', 'clarice']
boys = ['chris', 'arnold', 'bob']
lettergirls = {}
for girl in girls:
lettergirls.setdefault(girl[0], []).append(girl)
print([b+'+'+g for b in boys for g in lettergirls[b[0]]]) #斐波那契数列
def fibs(num):
result = [1, 2]
for i in range(num - 2):
result.append(result[-2] + result[-1])
return result
print(fibs(20)) #存储全名的字典
def init(data):
data['first'] = {}
data['middle'] = {}
data['last'] = {}
def lookup(data, label, name):
return data[label].get(name)
def store(data, full_name):
names = full_name.split()
if len(names) == 2:
names.insert(1, ' ')
labels = ('first', 'middle', 'last')
for label, name = zip(labels, names):
people = lookup(data, label, name)
if people:
people.append(full_name)
else:
data[label][name] = [full_name] #递归经典:阶乘、幂、二分查找
def search(sequence, number, lower, upper):
if lower == upper:
assert number == sequence[upper]
return upper
else:
middle = (lower + upper) // 2
if number > sequence[middle]:
return search(sequence, number, middle + 1, upper)
else:
return search(sequence, number, lower, middle) #模拟实现无穷算术序列
def checkIndex(key):
if not isinstance(key, (int, long)):
raise TypeError
if key < 0:
raise IndexError
class ArithmeticSequence:
def __init__(self, start = 0, step = 1):
self.start = start
self.step = step
self.changed = {}
def __getitem__(self, key):
checkIndex(key)
try:
return self.changed[key]
except KeyError:
return self.start + key * self.step
def __setitem__(self, key, value):
checkIndex(key)
self.changed[key] = value
 #基本的序列与映射规则
def checkIndex(key):
if not isinstance(key, (int, long)):
raise TypeError
if key < 0:
raise IndexError
class ArithmeticSequence:
def __init__(self, start = 0, step = 1):
self.start = start
self.step = step
self.changed = {}
def __getitem__(self, key):
checkIndex(key)
try:
return self.changed[key]
except KeyError:
return self.start + key * self.step
def __setitem__(self, key, value):
checkIndex(key)
self.changed[key] = value
#带有访问计数的列表
class CounterList(list):
def __init__(self, *agrs):
super(CounterList, self).__init__(*args)
self.counter = 0
def __getitem__(self, index):
self.counter += 1
return super(CounterList, self).__getitem__(index)

最新文章

  1. Knockout.js 组件
  2. Unity3D热更新全书-下载 唯一的一篇
  3. Scalaz(42)- Free :FreeAp-Applicative Style Programming Language
  4. SQL Server 事务
  5. JDK7学习笔记之基础类型
  6. 允许浏览器跨域访问web服务端的解决方案
  7. 矩形的个数-nyoj206
  8. Android ListView 子控件点击事件
  9. 个人练习--gif图流程
  10. [platform]linux platform device/driver(二)--Platform Device和Platform_driver注册过程之详细代码
  11. bzoj3571
  12. Sql语句 不支持中文 国外数据库
  13. javascript 学习总结(七)String对象
  14. 实现栈最小元素的min函数
  15. 求第k小的数 O(n)复杂度
  16. codeforce round #467(div.2)
  17. 从一个事件绑定说起 - DOM
  18. SSM-Netty实现软硬件通信,真实项目案例
  19. awk词频统计
  20. 前端 ----js的事件流的概念(重要)

热门文章

  1. 1.Spring项目启动时,加载相关初始化配置
  2. [Python]机器学习:PageRank原理与实现
  3. 面向对象编程(oop)的变迁
  4. 自动添加 ssh key 到远程主机的脚本,应用sshpass和ssh-copy-id
  5. keystone入口manage.py
  6. Laravel底层原理系列
  7. python学习之那些你不在乎却操作非主流的练习题(一)
  8. Java生成二维码连接
  9. 【DSP开发】C6678的中断控制器
  10. (转) pip Fatal error in launcher: Unable to create process using