为了账号安全,请及时绑定邮箱和手机立即绑定

为什么对变量所做的更改会反映在列表中?

为什么对变量所做的更改会反映在列表中?

慕村9548890 2022-08-16 15:32:03
在开始变量和结束变量中所做的更改将反映在 fli 列表中。这背后的原因是什么?flight = (input("Enter arrival time and departure time of flight : ").split())fl=[]while flight != []:    fl.append(flight)    flight = (input("Enter arrival time and departure time of flight : ").split())fl = sorted(fl)fli= []for i in fl:    f = []    f.append(list(map(int,i[0].split(":"))))    f.append(list(map(int, i[1].split(":"))))    fli.append(f)runway = 0max_runway = 0fli = sorted(fli)arrival = []departure = []for i in fli:    arrival.append(i[0])    departure.append(i[1])start = fli[0][0]max_time = startfor i in fli:    for j in i:        if j > max_time:            max_time = jend = max_timeend[1] += 1if end[1] % 60 == 0:    end[0] += 1    end[1] = 0if end[0] % 24 == 0:    end[0] = 0while start != end:    if start in arrival:        runway += 1    if start in departure:        runway -= 1    if max_runway < runway:        max_runway = runway    start[1] += 1    if start[1] % 60 == 0:        start[0] += 1        start[1] = 0    if start[0] % 24 == 0:        start[0] = 0print(max_runway)fli 列表之前,而循环是:[[[9, 15], [9, 25]], [[9, 20], [9, 45]], [[9, 30], [9, 35]], [[9, 30], [9, 38]], [[9, 35], [9, 40]]]fli 列表在 while 循环之后是 :[[[9, 46], [9, 25]], [[9, 20], [9, 46]], [[9, 30], [9, 35]], [[9, 30], [9, 38]], [[9, 35], [9, 40]]]
查看完整描述

3 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

a = [4,9],a是python中的一个对象,当你将一个对象分配给一个变量,即b = a,那么一个新对象不会被创建b点到与a相同的对象(内存位置)。

请参阅以下执行以更好地理解。

//img1.sycdn.imooc.com//62fb482500019d9c11140932.jpg

//img1.sycdn.imooc.com//62fb4830000134f211170946.jpg

//img1.sycdn.imooc.com//62fb483a00018af710840924.jpg

查看完整回答
反对 回复 2022-08-16
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

在python对象中,如list,set和dict是可变的。这意味着您可以在不更改其身份的情况下更改其内容。这里的情况看起来很相似。基本上,开始是指fli。因此,在开始时进行任何更改也会更改 fli 中的值。


查看完整回答
反对 回复 2022-08-16
?
茅侃侃

TA贡献1842条经验 获得超21个赞

  • fli[0][0]是列表而不是标量

  • start  = fli[0][0]:指向位于 的同一列表。上所做的任何更改都与执行更改相同startfli[0][0]startfli[0][0]

测试

fli = [[[9, 15], [9, 25]], [[9, 20], [9, 45]], [[9, 30], [9, 35]], [[9, 30], [9, 38]], [[9, 35], [9, 40]]]

a = fli[0][0]

a[1] += 1

assert fli[0][0][1] == a[1]


查看完整回答
反对 回复 2022-08-16
  • 3 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信