您的位置:首页 > 其它

第二周总结及复习

2018-03-10 11:40 211 查看
第一个感悟:
用三元条件运算符来实现一些基本的操作和功能会让代码量减少很多.
例如:is_true = 0 #像这样可以控制print函数的输出与输出,如果想实现某种条件打印某些内容可以使用到
print('1' if is_true else '2'')
m = 2 if is_true else 3
# 还比如用元组来做找最大值,第二大值的例子.
list1 = [1,1,2,2,3,3]
a = list1[0]
b = list1[1]
(a, b) = (a, b) if a > b else (b, a)
for i in list1:
(a, i) = (a, i) if a > i else (i, a)
# 这样循环下来,我们就可以拿到最大值a了, 是不是比常规的写法要简单的多呢!这一周还有一些难点, 
比如说: 递归函数的使用及对如何创建一个递归函数来实现一些事情.
例如:#求1-100递归求和
def recursive_sum(num):
if num == 1:
return 1
return num + recursive_sum(num - 1)
P. 递归求和就比较好理解了,不做过多阐述

#10级台阶,每次可以走1-3级,请问走完10级台阶有几种走法
def walk(n):
if n < 0:
return 0
elif n == 0:
return 1
return walk(n - 1) + walk(n - 2) + walk(n - 3)
P.在这里对递归公式的推导是一个难题,回溯条件其实很好可以得到. 需要理解的是如果是n级台阶,每次只能上3阶的话,那么上n级台阶的方法是(n-1)阶,(n-2)阶,(n-3)阶台阶的方法的总和

#汉诺塔
def hanoi(n, a, b, c):
if n > 0:
hanoi(n - 1, a, c, b)
print(a,'----->', b)
hanoi(n - 1, c, b, a)还有一个经典的递归函数,利用辗转相除法得到最大公约数.def gcd(x, y):
if x > y:
return gcd(y, x)
elif y % x == 0:
return x
else:
return gcd(y % x, x)这还有一个枚举需要单独拿出来讲一下,操作枚举可以得到一个索引位置和该位置对应的元素
简单举例如下:def main():
f = [100, 200, 300]
for index,val in enumerate(f):
print(index, ':', val)
# CRUD操作 Create Read Update Delete #增 删 改 查接下来的是,分别用递归和循环得到的斐波拉契序列:def foo(n):
if n < 0:
return 0
if n == 1:
return 1
return foo(n-1) + foo(n-2)

def main1():
f = [1, 1]
for index in range(2, 20):
val = f[index - 1] + f[index - 2 ]
f.append(val)
print(f)

main1()
list1 = [1]
for i in range(2, 21):
list1.append(foo(i))
print(list1)
列表生成式和列表生成器:f = [x + y for x in 'ABCDE' for y in '1234567']
f = [x for x in range(1, 10)]
f = [x ** 2 for x in range(1, 10)]
f = [x ** x for x in range(1, 10)]
上面是使用列表生成式直接得到的是列表内容
f = (x ** x for x in range(1, 10))
在这里会得到一个可迭代的生成器
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: