在开始变量和结束变量中所做的更改将反映在 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相同的对象(内存位置)。
请参阅以下执行以更好地理解。
慕雪6442864
TA贡献1812条经验 获得超5个赞
在python对象中,如list,set和dict是可变的。这意味着您可以在不更改其身份的情况下更改其内容。这里的情况看起来很相似。基本上,开始是指fli。因此,在开始时进行任何更改也会更改 fli 中的值。
茅侃侃
TA贡献1842条经验 获得超21个赞
fli[0][0]
是列表而不是标量start = fli[0][0]
:指向位于 的同一列表。上所做的任何更改都与执行更改相同start
fli[0][0]
start
fli[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]
添加回答
举报
0/150
提交
取消