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

在开始变量和结束变量中所做的更改将反映在 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 = 0

max_runway = 0

fli = sorted(fli)

arrival = []

departure = []

for i in fli:

    arrival.append(i[0])

    departure.append(i[1])


start = fli[0][0]

max_time = start

for i in fli:

    for j in i:

        if j > max_time:

            max_time = j

end = max_time

end[1] += 1

if end[1] % 60 == 0:

    end[0] += 1

    end[1] = 0

if end[0] % 24 == 0:

    end[0] = 0


while 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] = 0

print(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]]]


慕村9548890
浏览 90回答 3
3回答

翻过高山走不出你

a = [4,9],a是python中的一个对象,当你将一个对象分配给一个变量,即b = a,那么一个新对象不会被创建b点到与a相同的对象(内存位置)。请参阅以下执行以更好地理解。

慕雪6442864

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

茅侃侃

fli[0][0]是列表而不是标量start &nbsp;= 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] += 1assert fli[0][0][1] == a[1]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python