python编程导论读书笔记【3】

### 递归

递归的定义包含了两部分:至少有一种基本情形可以直接得到某种特定情形的结果,至少有一种递归情形(或称归纳情形)定义了该问题在其他情形下的结果。

世界上最简单的递归定义可能就是自然数的阶乘函数。 1!=1 (n+1)!=(n+1)*n!

### 斐波那契数列

```python
def fib(n):
"""假定n是正整数,返回第n个斐波那契数"""
if n == 0 or n == 1:
return 1
else:
return fib(n - 1)+fib(n - 2)

def testFib(n):
for i in range(n + 1):
print('fib of', i, '=', fib(i))

```

### 回文

当两个布尔值表达式通过and 连接时。每个表达式被称为合取项。如果他们是通过or连接的,那么被称为分取项。

### 模块

模块就是一个包含了python定义和语句的.py文件。

## 结构化类型、可变性与高阶函数

元组:一些元素的不可变有序列表。与字符串的区别是,元组中的元素不一定是字符,其中的单个元素可以是任意类型,且它们彼此之间的类型可以不同。

tuple类型的字面量形式是位于小括号之中的由逗号隔开的一组元素。

包含1的单元素元组,应该写成(1,)

可以在元组上重复操作。3*('a','2')的值就是('a','2','a','2','a','2')

range类型的对象占用的空间与其长度不成正比,范围是由起始值、结束值和步长定义的,它的存储仅占用很小的一部分空间。

range最常用在for循环中,range类型的对象也可以用在所有可以使用整数序列的地方。

#### 列表与可变性

与元组类似,列表也是值的有序序列,每个值都可以由索引进行标志。表示list类型字面量的语法与元组很类似。区别在于列表使用中括号,元组使用的是小括号。

空列表写作[],单元素列表不需要在闭括号 前面加上逗号。

列表与元组相比有一个特别重要的区别:列表是可变的,元组和字符串是不可变的。

可使列表发生变化的方法:

```
L.append(e): 将对象e追加到L的末尾
L.count(e): 返回e在L中出现的次数
L.insert(i,e): 将对象e插入L中索引值为i的位置
L.extend(L1): 将L1中的项目增加到L的末尾
L.remove(e):将L中第一个出现的e删除
L.index(e): 返回e第一次出现在L中的索引值。如果e不在L中,则抛出一个异常
L.pop(i): 删除并返回L中索引值为i的项目。如果L为空,则抛出一个异常。如果i被省略,则i的默认值为-1,删除并返回L中的最后一个元素。
L.sort(): 升序排列L中的元素
L.reverse(): 翻转L中的元素顺序
```

posted on 2019-07-10 14:29  菲菲菲非常可爱的小白兔  阅读(134)  评论(0编辑  收藏  举报