defhano(n, a, b, c):'''
汉诺塔的递归实现
n:代表几个塔
a:代表第一个塔,开始的塔
b:代表第二个塔,中间过渡的塔
c:代表第三个塔,目标塔
'''if n ==1:print(a,"-->", c)returnNone'''
if n== 2:
print(a, "-->", b)
print(a, "-->", c)
print(b, "-->", c)
return None
'''# 把n-1个塔,从a塔借助于c塔,挪到b塔上去
hano(n-1, a, c, b)print(a,"-->", c)# 把n-1个塔,从b塔,借助于a塔,挪到c塔上去
hano(n-1, b, a, c)
a ='A'
b ='B'
c ='C'
n =1
hano(n, a, b, c)
A --> C
n =2
hano(n, a, b, c)
A --> B
A --> C
B --> C
n =3
hano(n, a, b, c)
A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C
n =5
hano(n, a, b, c)
A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C
A --> B
C --> B
C --> A
B --> A
C --> B
A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C
B --> A
C --> B
C --> A
B --> A
B --> C
A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C
List(列表)
del:删除命令
# del 删除
a =[1,2,3,4,5,6]del a[2]print(a)
[1, 2, 4, 5, 6]
# del 删除# 如果使用del之后,id的值和删除前不一样,则说明删除生成了一个新的List
a =[1,2,3,4,5,6]print(id(a))del a[2]print(id(a))print(a)
1787345100360
1787345100360
[1, 2, 4, 5, 6]
# del一个变量后不能再继续使用此变量del a
print(a)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-15-a09b634934b2> in <module>
1 # del一个变量后不能再继续使用此变量
----> 2 del a
3 print(a)
NameError: name 'a' is not defined
列表相加
# 使用加号连接两个列表
a =[1,2,3,4,5]
b =[5,6,7,8,9]
d =['a','b','c']
c = a + b + d
print(c)
[1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 'a', 'b', 'c']
# 使用乘号操作列表# 列表直接跟一个整数想乘# 相当于把n个列表接在一起
a =[1,2,3,4,5]
b = a *3print(b)
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
# 成员资格运算# 就是判断一个元素是否在列表list里边
a =[1,2,3,4,5,6]
b =8# c的值是一个布尔值
c = b in a
print(c)
b =4print(b in a)
False
True
# not in
a =[1,2,3,4,5]
b =9print(b notin a)
True
列表的遍历
for
while
# for in list
a =[1,2,3,4,5]# 挨个打印a里边的元素for i in a:print(i)
1
2
3
4
5
# java, c++ 程序员写的python代码是这样的for i inrange(0,len(a)):print(a[i])
i +=1
1
2
3
4
5
b =["I love you"]for i in b:print(i)
I love you
# range# in 后面的变量要求是可以迭代的内容for i inrange(1,10):print(i)print(type(range(1,10)))
# 列表生成式可以嵌套# 有两个列表a,b
a =[i for i inrange(1,4)]# 生成List aprint(a)
b =[i for i inrange(100,400)if i %100==0]print(b)# 列表生成是可以嵌套,此时等于两个for循环嵌套
c =[m+n for m in a for n in b]print(c)# 上面代码跟下面代码等价for m in a:for n in b:print(m+n, end=" ")print()# 嵌套的列表生成也可以用条件表达式
c =[m+n for m in a for n in b if m+n <250]print(c)