递归
def look_for_key(box):
for item in box:
if item.is_a_box():
look_for_key(item) # 递归!
elif item.is_a_key():
print("found the key!")
基线条件和递归条件
每个递归函数都有两部分:基线条件(base case)和递归条件(recursive case)。递归条件指的是函数调用自己,而基线条件则指的是函数不再调用自己,从而避免形成无限循环。
def countdown(i):
print(i)
if i <= 0: # 基线条件
return
else: # 递归条件
countdown(i-1)
栈
栈只能操作最上面的那个元素
快速排序
分而治之(divide and conquer,D&C)——一种著名的递归式问题解决方法。
def quicksort(array):
if len(array) < 2: # 基线条件:为空或只包含一个元素的数组是“有序”的
return array
else:
pivot = array[0] # 基准值 递归条件
less = [i for i in array[1:] if i <= pivot]
greater = [i for i in array[1:] if i > pivot]
return quicksort(less) + [pivot] + quicksort(greater)
if __name__ == '__main__':
print(quicksort([10, 5, 2, 3]))
散列表
散列表可能是最有用的,也被称为散列映射、映射、字典和关联数组。
Python 提供的散列表实现为字典,你可以使用 dict() 来创建散列表。
favourite_food = dict()
# 或者 favourite_food = {}
favourite_food["chocolate"] = 0.67
favourite_food["milk"] = 1.49
favourite_food["cookie"] = 1.88
print(favourite_food)
散列表由键和值组成。在前面的散列表 favourite_food 中,键为商品名,值为商品价格。散列表将键映射到值。
防止重复
voted.get("tom")
未完待续...