'''
汉诺塔问题
规则:1. 每次移动一个盘子 2. 任何时候小盘子都在大盘子下面
方法:假设有n个盘子,当n=1时,A->C;
当n=2时,A->B,A->C,B->C
当n=3时,将底层大盘子上的所有盘子 当做一个盘子,执行n=2时的操作,执行递归操作
'''
def func(n,a,b,c):
if n == 1:
print(a,"---->",c)
if n == 2:
print(a,"---->",b)
print(a,"---->",c)
print(b,"---->",c)
return None
func(n-1,a,c,b)
print(a,"---->",c)
func(n-1,b,a,c)
# test
func(3,"A","B","C")
# list
a = [1,2,3,4,5]
print(a)
del a[2] # 删除元素
print(a)
# 列表相加
b = [1,2,3,4,5]
c = [6,7,8,9]
print(b+c)
# 列表相乘
print(b * 3)
# 判断值是否在列表中
print(3 in b)
# 判断值不在列表中
print(3 not in b)
# 列表遍历
# in 后面的变量要求是可迭代
for k in a:
print(k)
#while:
length=len(a)
i=0
while(i<length):
print(a[i])
i += 1
# 列表遍历
# in 后面的变量要求是可迭代
for k in a:
print(k)
#while:
length=len(a)
i=0
while(i<length):
print(a[i])
i += 1
# 双层列表
a = [["zhangsan",12,"北京"],["lisi",20,"南京"]]
for k,v,w in a:
print(k,"--",v,"--",w)
# 列表内涵:生成新列表、过滤列表
a = [1,2,3,4]
b = [i*10 for i in a]
#print(b)
# 过滤
a = [x for x in range(1,20)]
b = [i for i in a if i % 2 == 0]
#print(b)
# 列表生成式可以进行嵌套
a = [x for x in range(1,20)]
b = [i for i in a if i % 2 == 0]
print(b)
c = [i*j for i in a for j in b]
print(c)