《Python基础教程》一点笔记
2024-09-05 13:02:56
这本书还是月初的时候翻了翻,看了前十章左右就发现这本书写的比较烂,翻译地就更烂了,讲的内容其实没有抓住重点。
下面是看的时候记得几小段代码:
#首字母相同的男生女生
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)
最新文章
- Knockout.js 组件
- Unity3D热更新全书-下载 唯一的一篇
- Scalaz(42)- Free :FreeAp-Applicative Style Programming Language
- SQL Server 事务
- JDK7学习笔记之基础类型
- 允许浏览器跨域访问web服务端的解决方案
- 矩形的个数-nyoj206
- Android ListView 子控件点击事件
- 个人练习--gif图流程
- [platform]linux platform device/driver(二)--Platform Device和Platform_driver注册过程之详细代码
- bzoj3571
- Sql语句 不支持中文 国外数据库
- javascript 学习总结(七)String对象
- 实现栈最小元素的min函数
- 求第k小的数 O(n)复杂度
- codeforce round #467(div.2)
- 从一个事件绑定说起 - DOM
- SSM-Netty实现软硬件通信,真实项目案例
- awk词频统计
- 前端 ----js的事件流的概念(重要)
热门文章
- 1.Spring项目启动时,加载相关初始化配置
- [Python]机器学习:PageRank原理与实现
- 面向对象编程(oop)的变迁
- 自动添加 ssh key 到远程主机的脚本,应用sshpass和ssh-copy-id
- keystone入口manage.py
- Laravel底层原理系列
- python学习之那些你不在乎却操作非主流的练习题(一)
- Java生成二维码连接
- 【DSP开发】C6678的中断控制器
- (转) pip Fatal error in launcher: Unable to create process using