我很难理解这段代码,这是我即将到来的考试的练习。救命啊!
编程语言是python 2.7.5。问题是;什么是印刷品?
我知道答案是[5]
,但我不明白为什么。更具体地说,india()
函数中发生的事情在调用india(list2, elem)
时无法遵循它。
def india(juliet, kilo):
juliet[:] = juliet[1:3] + [kilo]
kilo = juliet[1] + 1
def tilt(l):
return l[2:]
list = [9,8,7,6]
elem = 5
list2 = list
india(list2, elem)
list = tilt(list2)
print list
答案 0 :(得分:5)
以下是一步一步发生的事情:
juliet[1:3] + [kilo]
:对输入列表进行切片,获取第二个和第三个值,并将新列表与其中的kilo
值连接起来。结果:[8, 7, 5]
。juliet
的整个切片;这将使用在1中创建的新列表的值替换列表中的所有索引。结果:juliet
引用的列表对象现在包含值[8, 7, 5]
。juliet
中的第二个值加1加至kilo
,结果是kilo
反弹为8
。最后一步是无关紧要的,只有本地kilo
名称是反弹,而原始变量传递给india()
函数不变。另一方面,julia
引用的列表已更改到位,这意味着list2
和list
对它的引用都会反映出相同的更改。
因此,当india()
返回时,list
和list2
都会引用内容为[8, 7, 5]
的相同列表对象。
在此之后,tilt()
会返回一个list2
切片,该切片将是新列表对象,只有list2
中的最后一个值,因此{ {1}}会反弹到list
,然后打印出来。
如果您想在考试中获得额外分数,请指出使用[5]
作为变量名称不是一个好主意,因为这会影响内置list
构造函数。