我很难理解这段代码,这是我即将考试的练习。救命啊!你知道吗
编程语言是python2.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
以下是逐步发生的情况:
juliet[1:3] + [kilo]
:对输入列表进行切片,获取第二个和第三个值,并将一个新列表与其中的kilo
值连接起来。结果:[8, 7, 5]
。你知道吗juliet
的整个切片;这将用1中创建的新列表的值替换列表中的所有索引。结果:juliet
引用的list对象现在保存值[8, 7, 5]
。你知道吗juliet
中的第二个值加1赋给kilo
,结果是kilo
反弹到8
。你知道吗最后一步是无关紧要的,只有局部的
kilo
名称是rebound,而传递给india()
函数的原始变量没有被触及。另一方面,julia
引用的列表在的地方进行了更改,这意味着对它的list2
和list
引用都反映了相同的更改。你知道吗因此,当
india()
返回时,list
和list2
都引用了内容为[8, 7, 5]
的同一列表对象。你知道吗在这之后,
tilt()
返回一个list2
片,这将是一个新的列表对象,只有list2
中的最后一个值,因此list
反弹到[5]
,然后打印出来。你知道吗如果您想在考试中获得额外的分数,请指出使用
list
作为变量名不是一个好主意,因为这会隐藏内置的list()
构造函数。你知道吗相关问题 更多 >
编程相关推荐