请问这个Python代码中的第5,7,9行如何理解?谢谢! 如何理解这段汉诺塔python代码中的递归?

作者&投稿:堵环 (若有异议请与网页底部的电邮联系)

d={}是初始化一个空的字典变量。

t是输入的名称组成的列表。for c in range(len(t)):就是遍历t列表的下标。

t[c]就是t列表中每一项,d[t[c]]=d.get(t[c],0)+1就是以t[c]作为键,d.get(t[c],0)+1作为值保存到字典中。其中d.get(t[c],0),get意思是取键值为t[c]的值,如果不存在就返回0。

所以d[t[c]]=d.get(t[c],0)+1的意思简单说:就是字典中如果存在键值t[c],则将其值+1,否则新建一个键t[c],值为1。

ls = list(d.items())意思是将字典d转换成一个由元祖组成的列表形式

ls.sort(key=lambda x:x[1], reverse=True) 这里是对上面的列表排序,由于列表包含元祖,所以key=lambda x:x[1]就是特指按列表每一项元祖的第二个元素进行排列。 reverse=True表示排序规则是逆序。

所以ls.sort(key=lambda x:x[1], reverse=True)的意思就是,将字典转换成的列表,按照字典值进行逆序排序。

for k in range(len(ls)):
zy,num=ls[k]这里就是遍历ls每项元祖,并将元祖第一个元祖赋值给zy,第二项赋值给num。

print("{}:{}".format(zy,num))如果是写在循环内,那zy,num=ls[k]这里的意思就是是将字典中键值对分别保存到遍历zy和num中,并打印。



第5行:
比如你输入的是:A B A C
t=names.split() => t=["A","B","A","C"]
t[c] = t[0] => "A"
d.get("A",0) => 如果找到字典d里的A键,就返回它值,没找到返回0
d[t[c]]=d.get(t[c],0)+1
=>循环到第一个A是d["A"] = 0+1
=>循环到第二个A是d["A"] = 1+1 ,达到计数累计的效果
第7行
ls.sort(key=lambda x:x[1], reverse=True)
按字典的值进行排序
第9行
zy,num=ls[k]
序列解包
相当于
zy = ls[k][0]
num== ls[k][1]

第五行 d是个字典,对行业(c)这个序列遍历,get函数是取得字典的键值,若没有此键则返回默认值,这里的默认值是0,所以这句话的意思是,遍历c统计元素的个数,并保持到字典中。
第七行 第六行ls的结果是一个元组的序列,sort函数按照元组的第2个元素排序,reverse=True是降序,所以意思是按照各行业的统计个数排序
第九行 将排完序的元组的序列一一赋值给zy,num 并打印,就是按照排列顺序以此打印职业,和职业出现的次数

请问以下如图所示的Python代码如何理解?谢谢!~


这样应该很清楚了吧

递归方法有些时候是不太好理解,不过递归的意义就是把解决问题n变成解决n-1的问题,最终变成解决1个问题。
假设有n个盘子,从上到下依次编号,最下面的盘子编号是大写的N。托盘分别是x,y,z。要把所有盘子从x移动到z。
前面几行代码就不解释了,很容易理解。
第五行,如果只有一个盘子,就直接从x移动到z。
第七行,如果不只一个盘子,先把上面n-1个盘子从x移动到y。
第八行,再把N号盘子从x移动到z。
第九行,再把刚才那n-1个盘子从y移动到z。

至于那n-1个盘子是怎么移动的,再次调用这个函数,把问题变成n-2个盘子加1个盘子的问题。

请问这个Python代码中的第5,7,9行如何理解?谢谢!
答:for k in range(len(ls)):zy,num=ls[k]这里就是遍历ls每项元祖,并将元祖第一个元祖赋值给zy,第二项赋值给num。print("{}:{}".format(zy,num))如果是写在循环内,那zy,num=ls[k]这里的意思就是是将字典中键值对分别保存到遍历zy和num中,并打印。

图中python第五行代码怎么理解?
答:这是python的语法糖,比如说 a语句 if a表达式 else b语句 就相当于 if a表达式:a语句 else b语句

这个第5第6题的python程序要怎么写呀,求python大佬求解!求参考代码!
答:6. 用递归方法求数列"1,1,1,3,5,9,17,31,..."的前20项def ex06(n): if n <= 3: return 1 else: return ex06(n-3) + ex06(n-2) + ex06(n-1) A = [0] * 20for i in range(1,21): A[i-1] = ex06(i)print(A)程序缩进如图所示 结果如下:...

python取列表前几个元素
答:print(first_four) # 输出:[1, 2, 3, 4]你也可以使用切片(slicing)来获取前几个元素,这个方法不仅适用于列表,还适用于字符串和其他可迭代对象。例如,你可以使用以下代码来获取第1到第5个元素(包括第5个元素):pythonmy_list = [1, 2, 3, 4, 5, 6]slice_list = my_list[1:6]...

Python代码:r = 5 + "5"的执行结果是?
答:这个是语法错误,整数与字符串之间不能进行加法运算。可以有两种选择:1、把"5"转换成整数,再进行整数之间的加法 如:r=5+int("5")最后,r=10 2、把5转换成字符串,再用+进行字符串之间的连接操作 如:r="%d" %(5)+"5"最后,r="55"

python中5/9结果为0怎么办
答:1、首先将python中之前的代码中的5改为5.0。2、其次将代码中的9改为9.0。3、最后点击右键,点击执行选项即可。Python由荷兰数学和计算机科学研究学会的吉多范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。

python中{3,4,5}怎么显示在用户界面上
答:(1)创建根窗口:在构建图形界面之前,需要创建一个根窗口(也叫主窗口)。根窗口对象可以通过使用tkinter模块中TK类的构造方法来创建。如果根窗口对象被命名为root,使它等于Tk()。注意此时T是大写的。代码是:root=Tk()(2)进入主消息周期:为保证随时能收到用户消息,跟随窗口进入消息周期,使GUI程序...

使用循环的嵌套结构编程输出以下图形 python
答:Python3.6之for循环嵌套撰写代码 第1个代码 :for i in range(0,4): for j in range(0,7): print("*",end="") print()说明:外循环用变量 i,一共打印4行:即:当i=0时,打印第1行,i=1时,打印第2行,..., i=3时,打印第4行。内循环用变量 j,每行打印7个*:即...

python中这段代码是什么意思
答:求出5+4+3+2+1的值15,不过下次写的时候注意把空格换成 否则没有缩进Python就语法错误了。i=5 n=0 whilei>0:n=n+i i=i-1 printn 不可能得到:1 2 3 4 5 请确认你的源程序是否是和网上的一致,最好是复制/粘贴上来看看。

毕业生必看Python及简代码
答:上面的代码首先创建一个文件data.txt(如果没有的话) , 然后它会在文件中写Pythonis awesome。7、回文 text='level is palindrome=text==text[::-1]is palindrome>True 8、用空格分隔的整数到一个列表 lis=list(map(int, input() .split() ) )print(lis)>12345678[1,2,3,4,5,6,...