递归
设置递归的深度:
import sys
sys.setrecursionlimit(1000000)
设置为1000000层
汉诺塔
defhanoi(n,x,y,z):
----if n ==1:
-------print(x,"-->",z)
---else:
------hanoi(n-1,x,z,y)
------print(x,"-->",z)
------hanoi(n-1,y,x,z)
字典:当索引不好用时
通过键找到相应位置的值,是键值对的形式
创建和访问字典
用大括号括起来的:dic1={"英语":"English","日语":"Japan","汉语":"China","香蕉":"Banana"}
dic1["英语"]--->"English"
空字典:dic2={}
dict3=dict((('f',70),('i',105),('s',115),('h',104)))--->dict3--->{'f':70,'i':105,'s':115,'h',104}
dict4=dict(1="one",2="two)--->dict4--->{"1":"one,"2":"two"}
dict4["1"]="three"--->dict4--->{"1":"three","2":"two"}
dict4["3"]="one"--->dict4--->{"1":"three","2":"two","3":"one"}
fromKeys()
重新创建一个新的字典;
dic1={"英语":"English","日语":"Japan","汉语":"China","香蕉":"Banana"}
dic1.fromKeys(("英语","日语"))--->{"英语":"English","日语":"Japan"}
dic1.fromKeys(("英语","日语"),"haha")--->{"英语":"haha","日语":"haha"}
dic1.fromKeys(("英语","日语"),("haha","xixi"))--->{"英语":("haha","xixi"),"日语":("haha","xixi")}
dic1.fromKeys(range(32),"赞")--->{0:"赞",1:"赞",2:"赞",3:"赞"......,32:"赞"}
常用方法:
dic1.keys()--->dict_keys([0,1, 2, 3,...,32])
dic1.values()--->dict_values(['赞', '赞', '赞',...,'赞'])
dic1.items()--->dict_items([(0, '赞'),(1, '赞'), (2, '赞'), (3, '赞'),...(32,'赞')])
dic1[32]--->报错,因为32项不存在
dic1.get(32)--->不会报错,会返回None
dic1.get(32,"haha")--->如果存在,就返回原有值,不存在就返回"haha"
判断键是否在字典中:31 in dic1---True 32 in dic1--->False
dic1.clear()--->清空字典
c=dic1 a=dic1.copy()--->浅拷贝,这样a和dic1指向的地址就不一样,但是c和dic1指向的地址是一样的。
dic1.pop(2)--->这样就会把第2 项弹出栈
dic1.popitem()--->这样会随机弹出一项,在字典是没有顺序的
dic1.setdefault('four')--->{"英语":"English","日语":"Japan","汉语":"China","香蕉":"Banana","four":None}
dic1.setdefault(5,"five")--->{"英语":"English","日语":"Japan","汉语":"China","香蕉":"Banana","four":None,5:"five"}
b={"four":4}
dic1.update(b)--->{"英语":"English","日语":"Japan","汉语":"China","香蕉":"Banana","four":4,5:"five"}
集合
set
num={1,2,3,4,5}
特点:
集合内部的元素都是唯一的,如果重复的话,重复的会被剔除掉
集合不支持索引
创建集合
一种直接把一堆元素用花括号括起来
一种是使用set()工厂函数
num=set([1,2,3,4,5,5,5,6,5,6])---->{1,2,3,4,5}
访问集合中的值
使用for把集合中的数据一个一个读取出来
通过in 和not in 判断一个元素是否在集合中已经存在
常用方法:
num.add(7)--->{1,2,3,4,5,7}
num.remove(5)--->{1,2,3,4,7}
不可变集合
num3=frozenset([1,2,3,4,5]) 不可变集合
num3.add(6)--->报错