它印的是什么?(列表)

2024-03-28 14:26:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难理解这段代码,这是我即将考试的练习。救命啊!你知道吗

编程语言是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

Tags: 函数答案代码returndef事情编程语言list
1条回答
网友
1楼 · 发布于 2024-03-28 14:26:00

以下是逐步发生的情况:

  1. juliet[1:3] + [kilo]:对输入列表进行切片,获取第二个和第三个值,并将一个新列表与其中的kilo值连接起来。结果:[8, 7, 5]。你知道吗
  2. 将步骤1中表达式的结果赋给juliet的整个切片;这将用1中创建的新列表的值替换列表中的所有索引。结果:juliet引用的list对象现在保存值[8, 7, 5]。你知道吗
  3. 将新的juliet中的第二个值加1赋给kilo,结果是kilo反弹到8。你知道吗

最后一步是无关紧要的,只有局部的kilo名称是rebound,而传递给india()函数的原始变量没有被触及。另一方面,julia引用的列表在的地方进行了更改,这意味着对它的list2list引用都反映了相同的更改。你知道吗

因此,当india()返回时,listlist2都引用了内容为[8, 7, 5]的同一列表对象。你知道吗

在这之后,tilt()返回一个list2片,这将是一个新的列表对象,只有list2中的最后一个值,因此list反弹到[5],然后打印出来。你知道吗

如果您想在考试中获得额外的分数,请指出使用list作为变量名不是一个好主意,因为这会隐藏内置的list()构造函数。你知道吗

相关问题 更多 >