登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 519|回复: 0

Python 口试中 8 个必考题目

[复制链接]

6

主题

0

帖子

0

现金

黑狼菜鸟

Rank: 1

积分
0
发表于 2017-12-4 21:56:55 | 显示全部楼层 |阅读模式 来自 美国
您的域名(hlsh.sh)未得到授权,部门功能受到影响!


尊重的用户:

  您好!非常感谢您能安装和关注本产物,为了产物的可连续发展和升级,众大云收罗已经开始收费。

  向用户收费是为了给用户更可靠的保障和服务,所收取的费用重要用于产物的正常运作、研发和改进,盼望各位可以或许明白和支持。

  别的,为了报答新老客户,众大云收罗3折优惠,原价980元,如今购买仅需290元,给您节流了690元。

  官方QQ群:23530791  客服QQ:155120699

  购买域名授权请打开下面的网址:

http://www.0762home.com/zt/csdn123_news/pay_url.php?url=hlsh.sh

  购买域名授权之后全部的未授权提示将主动消散,图片也正常表现,域名授权永世有用终身可用,后续的升级更新也是免费的,一次购买一辈子都能用,无后顾之忧!

提示:您现在利用的是免费试用版,可以手动删除上面的授权提示,发布这篇文章!


(点击上方蓝字,快速关注我们)



译文:everfigthing
英文:developers
segmentfault.com/a/1190000006265256
如有好文章投稿,请点击 → 这里相识详情


1、下面这段代码的输出效果是什么?请表明。


def[color=#006FE0 !important] [color=teal !important]extendList[color=#333333 !important]([color=#002D7A !important]val[color=#333333 !important],[color=#006FE0 !important] [color=teal !important]list[color=#006FE0 !important]=[color=#333333 !important][])[color=#006FE0 !important]:
[color=#006FE0 !important]    [color=teal !important]list[color=#333333 !important].[color=teal !important]append[color=#333333 !important]([color=#002D7A !important]val[color=#333333 !important])
[color=#006FE0 !important]    return[color=#006FE0 !important] [color=teal !important]list
 
[color=#002D7A !important]list1[color=#006FE0 !important] = [color=teal !important]extendList[color=#333333 !important]([color=#009999 !important]10[color=#333333 !important])
[color=#002D7A !important]list2[color=#006FE0 !important] = [color=teal !important]extendList[color=#333333 !important]([color=#009999 !important]123[color=#333333 !important],[])
[color=#002D7A !important]list3[color=#006FE0 !important] = [color=teal !important]extendList[color=#333333 !important]([color=#DD1144 !important]'a'[color=#333333 !important])
 
[color=teal !important]print[color=#006FE0 !important] [color=#DD1144 !important]"list1 = %s"[color=#006FE0 !important] % [color=teal !important]list1
[color=teal !important]print[color=#006FE0 !important] [color=#DD1144 !important]"list2 = %s"[color=#006FE0 !important] % [color=teal !important]list2
[color=teal !important]print[color=#006FE0 !important] [color=#DD1144 !important]"list3 = %s"[color=#006FE0 !important] % [color=#002D7A !important]list3


怎样修改extendList的界说可以或许产生以下预期的举动?


上面代码输出效果将是:


[color=#002D7A !important]list1[color=#006FE0 !important] = [color=#333333 !important][[color=#009999 !important]10[color=#333333 !important],[color=#006FE0 !important] [color=#DD1144 !important]'a'[color=#333333 !important]]
[color=#002D7A !important]list2[color=#006FE0 !important] = [color=#333333 !important][[color=#009999 !important]123[color=#333333 !important]]
[color=#002D7A !important]list3[color=#006FE0 !important] = [color=#333333 !important][[color=#009999 !important]10[color=#333333 !important],[color=#006FE0 !important] [color=#DD1144 !important]'a'[color=#333333 !important]]


许多人都会误以为list1=[10],list3=[‘a’],由于他们以为每次extendList被调用时,列表参数的默认值都将被设置为[].但现实上的环境是,新的默认列表只在函数被界说的那一刻创建一次。


当extendList被没有指定特定参数list调用时,这组list的值随后将被利用。这是由于带有默认参数的表达式在函数被界说的时间被盘算,不是在调用的时间被盘算。因此list1和list3是在同一个默认列表上举行操纵(盘算)的。而list2是在一个分离的列表上举行操纵(盘算)的。(通过通报一个自有的空列表作为列表参数的数值)。


extendList的界说可以作如下修改。


只管,创建一个新的列表,没有特定的列表参数。


下面这段代码大概可以或许产生想要的效果。


def[color=#006FE0 !important] [color=teal !important]extendList[color=#333333 !important]([color=#002D7A !important]val[color=#333333 !important],[color=#006FE0 !important] [color=teal !important]list[color=#006FE0 !important]=[color=#800080 !important]None[color=#333333 !important])[color=#006FE0 !important]:
[color=#006FE0 !important]  if[color=#006FE0 !important] [color=teal !important]list[color=#006FE0 !important] is[color=#006FE0 !important] [color=#800080 !important]None[color=#006FE0 !important]:
[color=#006FE0 !important]    [color=teal !important]list[color=#006FE0 !important] = [color=#333333 !important][]
[color=#006FE0 !important]  [color=teal !important]list[color=#333333 !important].[color=teal !important]append[color=#333333 !important]([color=#002D7A !important]val[color=#333333 !important])
[color=#006FE0 !important]  return[color=#006FE0 !important] [color=teal !important]list


通过上面的修改,输出效果将酿成:


[color=#002D7A !important]list1[color=#006FE0 !important] = [color=#333333 !important][[color=#009999 !important]10[color=#333333 !important]]
[color=#002D7A !important]list2[color=#006FE0 !important] = [color=#333333 !important][[color=#009999 !important]123[color=#333333 !important]]
[color=#002D7A !important]list3[color=#006FE0 !important] = [color=#333333 !important][[color=#DD1144 !important]'a'[color=#333333 !important]]


2、下面这段代码的输出效果将是什么?请表明。


def[color=#006FE0 !important] [color=teal !important]multipliers[color=#333333 !important]()[color=#006FE0 !important]:
[color=#006FE0 !important]  return[color=#006FE0 !important] [color=#333333 !important][lambda[color=#006FE0 !important] [color=#002D7A !important]x[color=#006FE0 !important] : [color=#002D7A !important]i[color=#006FE0 !important] * x[color=#006FE0 !important] for[color=#006FE0 !important] i[color=#006FE0 !important] in[color=#006FE0 !important] [color=teal !important]range[color=#333333 !important]([color=#009999 !important]4[color=#333333 !important])]
[color=#006FE0 !important]    
[color=teal !important]print[color=#006FE0 !important] [color=#333333 !important][[color=teal !important]m[color=#333333 !important]([color=#009999 !important]2[color=#333333 !important])[color=#006FE0 !important] for[color=#006FE0 !important] m[color=#006FE0 !important] in[color=#006FE0 !important] [color=teal !important]multipliers[color=#333333 !important]()]


你怎样修改上面的multipliers的界说产生想要的效果?
上面代码输出的效果是[6, 6, 6, 6] (不是我们想的[0, 2, 4, 6])。


上述题目产生的缘故原由是Python闭包的耽误绑定。这意味着内部函数被调用时,参数的值在闭包内举行查找。因此,当任何由multipliers()返回的函数被调用时,i的值将在附近的范围举行查找。当时,不管返回的函数是否被调用,for循环已经完成,i被赋予了终极的值3。


因此,每次返回的函数乘以通报过来的值3,由于上段代码传过来的值是2,它们终极返回的都是6。(3*2)可巧的是,《The Hitchhiker’s Guide to Python》也指出,在与lambdas函数相干也有一个被广泛被误解的知识点,不外跟这个case不一样。由lambda表达式创造的函数没有什么特别的地方,它实在是和def创造的函数式一样的。


下面是办理这一题目的一些方法。


一种办理方法就是用Python天生器。


def[color=#006FE0 !important] [color=teal !important]multipliers[color=#333333 !important]()[color=#006FE0 !important]:
[color=#006FE0 !important]  for[color=#006FE0 !important] i[color=#006FE0 !important] in[color=#006FE0 !important] [color=teal !important]range[color=#333333 !important]([color=#009999 !important]4[color=#333333 !important])[color=#006FE0 !important]: yield[color=#006FE0 !important] lambda[color=#006FE0 !important] [color=#002D7A !important]x[color=#006FE0 !important] : [color=#002D7A !important]i[color=#006FE0 !important] * [color=#002D7A !important]x


别的一个办理方案就是创造一个闭包,使用默认函数立刻绑定。


def[color=#006FE0 !important] [color=teal !important]multipliers[color=#333333 !important]()[color=#006FE0 !important]:
[color=#006FE0 !important]  return[color=#006FE0 !important] [color=#333333 !important][lambda[color=#006FE0 !important] [color=#002D7A !important]x[color=#333333 !important],[color=#006FE0 !important] [color=#002D7A !important]i[color=#006FE0 !important]=[color=#002D7A !important]i[color=#006FE0 !important] : [color=#002D7A !important]i[color=#006FE0 !important] * x[color=#006FE0 !important] for[color=#006FE0 !important] i[color=#006FE0 !important] in[color=#006FE0 !important] [color=teal !important]range[color=#333333 !important]([color=#009999 !important]4[color=#333333 !important])]


另有种替换的方案是,利用偏函数:


from[color=#006FE0 !important] [color=teal !important]functools[color=#006FE0 !important] import[color=#006FE0 !important] [color=teal !important]partial
from[color=#006FE0 !important] [color=teal !important]operator[color=#006FE0 !important] import[color=#006FE0 !important] [color=teal !important]mul
 
def[color=#006FE0 !important] [color=teal !important]multipliers[color=#333333 !important]()[color=#006FE0 !important]:
[color=#006FE0 !important]  return[color=#006FE0 !important] [color=#333333 !important][[color=teal !important]partial[color=#333333 !important]([color=#002D7A !important]mul[color=#333333 !important],[color=#006FE0 !important] [color=#002D7A !important]i[color=#333333 !important])[color=#006FE0 !important] for[color=#006FE0 !important] i[color=#006FE0 !important] in[color=#006FE0 !important] [color=teal !important]range[color=#333333 !important]([color=#009999 !important]4[color=#333333 !important])]


3、下面这段代码的输出效果将是什么?请表明。


[color=#800080 !important]class[color=#006FE0 !important] [color=teal !important]Parent[color=#333333 !important]([color=teal !important]object[color=#333333 !important])[color=#006FE0 !important]:
[color=#006FE0 !important]    [color=#002D7A !important]x[color=#006FE0 !important] = [color=#009999 !important]1
 
[color=#800080 !important]class[color=#006FE0 !important] [color=teal !important]Child1[color=#333333 !important]([color=#002D7A !important]Parent[color=#333333 !important])[color=#006FE0 !important]:
[color=#006FE0 !important]    pass
 
[color=#800080 !important]class[color=#006FE0 !important] [color=teal !important]Child2[color=#333333 !important]([color=#002D7A !important]Parent[color=#333333 !important])[color=#006FE0 !important]:
[color=#006FE0 !important]    pass
 
[color=teal !important]print[color=#006FE0 !important] [color=#002D7A !important]Parent[color=#333333 !important].[color=#002D7A !important]x[color=#333333 !important],[color=#006FE0 !important] [color=#002D7A !important]Child1[color=#333333 !important].[color=#002D7A !important]x[color=#333333 !important],[color=#006FE0 !important] [color=#002D7A !important]Child2[color=#333333 !important].x
[color=#002D7A !important]Child1[color=#333333 !important].[color=#002D7A !important]x[color=#006FE0 !important] = [color=#009999 !important]2
[color=teal !important]print[color=#006FE0 !important] [color=#002D7A !important]Parent[color=#333333 !important].[color=#002D7A !important]x[color=#333333 !important],[color=#006FE0 !important] [color=#002D7A !important]Child1[color=#333333 !important].[color=#002D7A !important]x[color=#333333 !important],[color=#006FE0 !important] [color=#002D7A !important]Child2[color=#333333 !important].x
[color=#002D7A !important]Parent[color=#333333 !important].[color=#002D7A !important]x[color=#006FE0 !important] = [color=#009999 !important]3
[color=teal !important]print[color=#006FE0 !important] [color=#002D7A !important]Parent[color=#333333 !important].[color=#002D7A !important]x[color=#333333 !important],[color=#006FE0 !important] [color=#002D7A !important]Child1[color=#333333 !important].[color=#002D7A !important]x[color=#333333 !important],[color=#006FE0 !important] [color=#002D7A !important]Child2[color=#333333 !important].[color=#002D7A !important]x


输出效果将是:


[color=#009999 !important]1[color=#006FE0 !important] [color=#009999 !important]1[color=#006FE0 !important] [color=#009999 !important]1
[color=#009999 !important]1[color=#006FE0 !important] [color=#009999 !important]2[color=#006FE0 !important] [color=#009999 !important]1
[color=#009999 !important]3[color=#006FE0 !important] [color=#009999 !important]2[color=#006FE0 !important] [color=#009999 !important]3


让许多人狐疑或惊奇的是末了一行输出为什么是3 2 3 而不是 3 2 1.为什么在改变parent.x的同时也改变了child2.x的值?但与此同时没有改变Child1.x的值?


此答案的关键是,在Python中,类变量在内部是以字典的情势举行通报。


假如一个变量名没有在当前类下的字典中发现。则在更高级的类(如它的父类)中经心搜刮直到引用的变量名被找到。(假如引用变量名在自身类和更高级类中没有找到,将会引发一个属性错误。)


因此,在父类中设定x = 1,让变量x类(带有值1)可以或许在其类和其子类中被引用到。这就是为什么第一个打印语句输出效果是1 1 1


因此,假如它的任何一个子类被覆写了值(比方说,当我们实行语句Child.x = 2),这个值只在子类中举行了修改。这就是为什么第二个打印语句输出效果是1 2 1


终极,假如这个值在父类中举行了修改,(比方说,当我们实行语句Parent.x = 3),这个改变将会影响那些还没有覆写子类的值(在这个例子中就是Child2)这就是为什么第三打印语句输出效果是3 2 3


4、下面这段代码在Python2下输出效果将是什么?请表明。


def[color=#006FE0 !important] [color=teal !important]div1[color=#333333 !important]([color=#002D7A !important]x[color=#333333 !important],[color=#002D7A !important]y[color=#333333 !important])[color=#006FE0 !important]:
[color=#006FE0 !important]    [color=teal !important]print[color=#006FE0 !important] [color=#DD1144 !important]"%s/%s = %s"[color=#006FE0 !important] % [color=#333333 !important]([color=#002D7A !important]x[color=#333333 !important],[color=#006FE0 !important] [color=#002D7A !important]y[color=#333333 !important],[color=#006FE0 !important] [color=#002D7A !important]x[color=#006FE0 !important]/[color=#002D7A !important]y[color=#333333 !important])
[color=#006FE0 !important]    
def[color=#006FE0 !important] [color=teal !important]div2[color=#333333 !important]([color=#002D7A !important]x[color=#333333 !important],[color=#002D7A !important]y[color=#333333 !important])[color=#006FE0 !important]:
[color=#006FE0 !important]    [color=teal !important]print[color=#006FE0 !important] [color=#DD1144 !important]"%s//%s = %s"[color=#006FE0 !important] % [color=#333333 !important]([color=#002D7A !important]x[color=#333333 !important],[color=#006FE0 !important] [color=#002D7A !important]y[color=#333333 !important],[color=#006FE0 !important] [color=#002D7A !important]x[color=#006FE0 !important]//[color=#002D7A !important]y[color=#333333 !important])
 
[color=teal !important]div1[color=#333333 !important]([color=#009999 !important]5[color=#333333 !important],[color=#009999 !important]2[color=#333333 !important])
[color=teal !important]div1[color=#333333 !important]([color=#009999 !important]5.[color=#333333 !important],[color=#009999 !important]2[color=#333333 !important])
[color=teal !important]div2[color=#333333 !important]([color=#009999 !important]5[color=#333333 !important],[color=#009999 !important]2[color=#333333 !important])
[color=teal !important]div2[color=#333333 !important]([color=#009999 !important]5.[color=#333333 !important],[color=#009999 !important]2.[color=#333333 !important])


在Python3下效果会有怎样的差别?(固然,假设上述打印语句被转换成Python3的语法)


在Python2中,上述代码输出将是


[color=#009999 !important]5[color=#006FE0 !important]/[color=#009999 !important]2[color=#006FE0 !important] = [color=#009999 !important]2
[color=#009999 !important]5.0[color=#006FE0 !important]/[color=#009999 !important]2[color=#006FE0 !important] = [color=#009999 !important]2.5
[color=#009999 !important]5[color=#006FE0 !important]//[color=#009999 !important]2[color=#006FE0 !important] = [color=#009999 !important]2
[color=#009999 !important]5.0[color=#006FE0 !important]//[color=#009999 !important]2.0[color=#006FE0 !important] = [color=#009999 !important]2.0


默认环境下,Python 2 主动实行整形盘算假如两者都是整数。因此,5/2 效果是2,而5./2效果是2.5


留意,在Python2中,你可以通过增长以下引用来覆写这个举动。


from future import division


同时要留意的是,//操纵符将总是实行整形除法,不管操纵符的范例。这就是为什么纵然在Python 2中5.0//2.0的效果是2.0。然而在Python3中,没有此类特性,


比方,在两头都是整形的环境下,它不会实行整形除法


因此,在Python3中,将会是如下效果:


[color=#009999 !important]5[color=#006FE0 !important]/[color=#009999 !important]2[color=#006FE0 !important] = [color=#009999 !important]2.5
[color=#009999 !important]5.0[color=#006FE0 !important]/[color=#009999 !important]2[color=#006FE0 !important] = [color=#009999 !important]2.5
[color=#009999 !important]5[color=#006FE0 !important]//[color=#009999 !important]2[color=#006FE0 !important] = [color=#009999 !important]2
[color=#009999 !important]5.0[color=#006FE0 !important]//[color=#009999 !important]2.0[color=#006FE0 !important] = [color=#009999 !important]2.0


5、下面代码的输出效果将是什么?


[color=teal !important]list[color=#006FE0 !important] = [color=#333333 !important][[color=#DD1144 !important]'a'[color=#333333 !important],[color=#006FE0 !important] [color=#DD1144 !important]'b'[color=#333333 !important],[color=#006FE0 !important] [color=#DD1144 !important]'c'[color=#333333 !important],[color=#006FE0 !important] [color=#DD1144 !important]'d'[color=#333333 !important],[color=#006FE0 !important] [color=#DD1144 !important]'e'[color=#333333 !important]]
[color=teal !important]print[color=#006FE0 !important] [color=teal !important]list[color=#333333 !important][[color=#009999 !important]10[color=#006FE0 !important]:[color=#333333 !important]]


下面的代码将输出[],不会产生IndexError错误。就像所盼望的那样,实验用超出成员的个数的index来获取某个列表的成员。


比方,实验获取list[10]和之后的成员,会导致IndexError.


然而,实验获取列表的切片,开始的index凌驾了成员个数不会产生IndexError,而是仅仅返回一个空列表。


这成为特殊让人恶心的疑难杂症,由于运行的时间没有错误产生,导致bug很难被追踪到。


6、思量下列代码片断


[color=teal !important]list[color=#006FE0 !important] = [color=#333333 !important][[color=#006FE0 !important] [color=#333333 !important][[color=#006FE0 !important] [color=#333333 !important]][color=#006FE0 !important] [color=#333333 !important]][color=#006FE0 !important] * [color=#009999 !important]5
[color=teal !important]list[color=#006FE0 !important]  [color=#999999 !important]# output?
[color=teal !important]list[color=#333333 !important][[color=#009999 !important]0[color=#333333 !important]].[color=teal !important]append[color=#333333 !important]([color=#009999 !important]10[color=#333333 !important])
[color=teal !important]list[color=#006FE0 !important]  [color=#999999 !important]# output?
[color=teal !important]list[color=#333333 !important][[color=#009999 !important]1[color=#333333 !important]].[color=teal !important]append[color=#333333 !important]([color=#009999 !important]20[color=#333333 !important])
l[color=teal !important]ist[color=#006FE0 !important]  [color=#999999 !important]# output?
[color=teal !important]list[color=#333333 !important].[color=teal !important]append[color=#333333 !important]([color=#009999 !important]30[color=#333333 !important])
[color=teal !important]list[color=#006FE0 !important]  [color=#999999 !important]# output?
[color=#999999 !important]



2,4,6,8行将输出什么效果?试表明。


输出的效果如下:
[color=#999999 !important]

[color=#333333 !important][[],[color=#006FE0 !important] [color=#333333 !important][],[color=#006FE0 !important] [color=#333333 !important][],[color=#006FE0 !important] [color=#333333 !important][],[color=#006FE0 !important] [color=#333333 !important][]]
[color=#333333 !important][[[color=#009999 !important]10[color=#333333 !important]],[color=#006FE0 !important] [color=#333333 !important][[color=#009999 !important]10[color=#333333 !important]],[color=#006FE0 !important] [color=#333333 !important][[color=#009999 !important]10[color=#333333 !important]],[color=#006FE0 !important] [color=#333333 !important][[color=#009999 !important]10[color=#333333 !important]],[color=#006FE0 !important] [color=#333333 !important][[color=#009999 !important]10[color=#333333 !important]]]
[color=#333333 !important][[[color=#009999 !important]10[color=#333333 !important],[color=#006FE0 !important] [color=#009999 !important]20[color=#333333 !important]],[color=#006FE0 !important] [color=#333333 !important][[color=#009999 !important]10[color=#333333 !important],[color=#006FE0 !important] [color=#009999 !important]20[color=#333333 !important]],[color=#006FE0 !important] [color=#333333 !important][[color=#009999 !important]10[color=#333333 !important],[color=#006FE0 !important] [color=#009999 !important]20[color=#333333 !important]],[color=#006FE0 !important] [color=#333333 !important][[color=#009999 !important]10[color=#333333 !important],[color=#006FE0 !important] [color=#009999 !important]20[color=#333333 !important]],[color=#006FE0 !important] [color=#333333 !important][[color=#009999 !important]10[color=#333333 !important],[color=#006FE0 !important] [color=#009999 !important]20[color=#333333 !important]]]
[color=#333333 !important][[[color=#009999 !important]10[color=#333333 !important],[color=#006FE0 !important] [color=#009999 !important]20[color=#333333 !important]],[color=#006FE0 !important] [color=#333333 !important][[color=#009999 !important]10[color=#333333 !important],[color=#006FE0 !important] [color=#009999 !important]20[color=#333333 !important]],[color=#006FE0 !important] [color=#333333 !important][[color=#009999 !important]10[color=#333333 !important],[color=#006FE0 !important] [color=#009999 !important]20[color=#333333 !important]],[color=#006FE0 !important] [color=#333333 !important][[color=#009999 !important]10[color=#333333 !important],[color=#006FE0 !important] [color=#009999 !important]20[color=#333333 !important]],[color=#006FE0 !important] [color=#333333 !important][[color=#009999 !important]10[color=#333333 !important],[color=#006FE0 !important] [color=#009999 !important]20[color=#333333 !important]],[color=#006FE0 !important] [color=#009999 !important]30[color=#333333 !important]]


表明如下:



第一行的输出效果直觉上很轻易明白,比方 list = [ [ ] ] * 5 就是简朴的创造了5个空列表。然而,明白表达式list=[ [ ] ] * 5的关键一点是它不是创造一个包罗五个独立列表的列表,而是它是一个创建了包罗对同一个列表五次引用的列表。只有相识了这一点,我们才气更好的明白接下来的输出效果。


list[0].append(10) 将10附加在第一个列表上。


但由于全部5个列表是引用的同一个列表,以是这个效果将是:


[[10], [10], [10], [10], [10]]


同理,list[1].append(20)将20附加在第二个列表上。但同样由于5个列表是引用的同一个列表,以是输出效果如今是:


[[10, 20], [10, 20], [10, 20], [10, 20], [10, 20]].


作为对比, list.append(30)是将整个新的元素附加在外列表上,因此产生的效果是: [[10, 20], [10, 20], [10, 20], [10, 20], [10, 20], 30].


7、Given a list of N numbers。


给定一个含有N个数字的列表。


利用单一的列表天生式来产生一个新的列表,该列表只包罗满意以下条件的值:


(a)偶数值
(b)元素为原始列表中偶数切片。


比方,假如list[2]包罗的值是偶数。那么这个值应该被包罗在新的列表当中。由于这个数字同时在原始列表的偶数序列(2为偶数)上。然而,假如list[3]包罗一个偶数,


谁人数字不应该被包罗在新的列表当中,由于它在原始列表的奇数序列上。
对此题目的简朴办理方法如下:


[x for x in list[::2] if x%2 == 0]


比方,给定列表如下:


list = [ 1 , 3 , 5 , 8 , 10 , 13 , 18 , 36 , 78 ]


列表天生式[x for x in list[::2] if x%2 == 0] 的效果是,


[10, 18, 78]


这个表达式工作的步调是,第一步取出偶数切片的数字,


第二步剔除此中全部奇数。


给定以下字典的子类:


[color=#800080 !important]class[color=#006FE0 !important] [color=teal !important]DefaultDict[color=#333333 !important]([color=teal !important]dict[color=#333333 !important])[color=#006FE0 !important]:
[color=#006FE0 !important]  def[color=#006FE0 !important] [color=teal !important]__missing__[color=#333333 !important](self[color=#333333 !important],[color=#006FE0 !important] [color=#002D7A !important]key[color=#333333 !important])[color=#006FE0 !important]:
[color=#006FE0 !important]    return[color=#006FE0 !important] [color=#333333 !important][]


8、下面的代码可以或许运行么?为什么?


[color=#002D7A !important]d[color=#006FE0 !important] = [color=teal !important]DefaultDict[color=#333333 !important]()
[color=#002D7A !important]d[color=#333333 !important][[color=#DD1144 !important]'florp'[color=#333333 !important]][color=#006FE0 !important] = [color=#009999 !important]127


可以或许运行。


当key缺失时,实行DefaultDict类,字典的实例将主动实例化这个数列。


看完本文有劳绩?请转发分享给更多人

关注「Python开辟者」,提拔Python技能

q9GT4zcIgYdY9j29.jpg




上一篇:Python vs Ruby: 谁是最好的 web 开辟语言?
下一篇:从小白到大神,一文把握 Python 麋集知识点
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-5-16 04:42 , Processed in 0.250642 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表