@[TOC](2.24学堂在线python学习笔记 高阶编程)
# 重要笔记
1. 利用二分搜索法来查找一个字符是否在字符串当中
```py
def isIn(char, aStr):
'''
char: a single character
aStr: an alphabetized string
returns: True if char is in aStr; False otherwise
'''
# Base case: If aStr is empty, we did not find the char.
if aStr == '':
return False
# Base case: if aStr is of length 1, just see if the chars are equal
if len(aStr) == 1:
return aStr == char
# Base case: See if the character in the middle of aStr equals the
# test character
midIndex = len(aStr)/2
midChar = aStr[midIndex]
if char == midChar:
# We found the character!
return True
# Recursive case: If the test character is smaller than the middle
# character, recursively search on the first half of aStr
elif char < midChar:
return isIn(char, aStr[:midIndex])
# Otherwise the test character is larger than the middle character,
# so recursively search on the last half of aStr
else:
return isIn(char, aStr[midIndex+1:])
```
第六章
# 重要概念
咱们这节课从数据类型讲起,进而将我们的编程变成高阶的编程。我们会了解到集中复杂的数据结构:元组、列表、字典。还会看到调用函数的函数,以及利用它调用函数集的函数。
# 元组
元组的基本想法是:能不能像字母串一样,构造一个可以有次序的序列?只不过把字符串中的每一个字符替换成一个数据?
元组实现了这样的功能
1. 元组不可更改
元组仅仅能够用() 赋值来添加,例如
```py
T1=(1,’two’,3)
T2=(t1,’four’)
#如此T2肯定是这样的形式 ((1,’two’,3),’four’)
print(T1+T2)
#(1,’two’,3,’four’)
#取出操作
print(T1+T2)[3]
#切片
print(T1+T2)[2:5]
#单个例子
T3=(‘five’,)
#特别注意单个例子必须要以 ‘ , ’
#结尾,这样才能是好的元组
```
# 元组例子
1. 操纵元组找出所有公约数
# 列表
1. 列表支持所有形式的操作,刚才的检索、切分、串联、循环访问,都支持
2. 但是我们为什么需要元组呢?有时候,我们在数据频繁引用的时候就将变量设定成元组,如此一来能够从源头上避免数据格式不对发生bug
3. 但是为什么又需要列表呢?列表因为能够具体修改其中的某几项,这在数据库非常大的时候变得非常实用,我们就不需要每次修改数据就新建一个数据库了
4. 注意,因为列表可以对元素进行修改,有时候环境的指针还没有改位置,这就造成了有时候需要额外拷贝一份列表,对这个拷贝进行循环,但是却在原列表上做增删改
5. 列表a,b的直接加减(带上名字)能够形成另外一个变量,设为Y
Y=a+b的话,如果a,b的数值在程序后面进行了修改,Y的值就会自动计算到新的a+b,如果在程序后方Y的值发生了修改,a+b的值也会发生修改,这就叫做
Aliasing别名方法,很好用,但是也很危险!
# 高阶编程
1. 函数映射到函数
考虑函数 h(c,f) ,f是一个函数,如此就对h调用了f的函数,但是一旦调过来
h(F,c) 假定F是一个函数集,那么就可以对同一组数值c反复作用F中不同的函数
2. Python中就已经自带了过程映射的函数 map(a,b)
网友评论