Почему изменения, внесенные в переменные, отражаются в List? - PullRequest
0 голосов
/ 29 февраля 2020

Изменения, сделанные в начальной и конечной переменных, отражаются в списке 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 до того, как l oop: [[[9, 15], [9, 25]], [[9, 20], [9, 45]], [[9, 30], [9, 35]], [[9, 30], [9, 38]], [[9, 35], [9, 40]]]

список fli после того, как l oop: [[[9, 46], [9, 25]], [[9, 20], [9, 46]], [[9, 30], [9, 35]], [[9, 30], [9, 38]], [[9, 35], [9, 40]]]

Ответы [ 3 ]

1 голос
/ 29 февраля 2020

a = [4,9] , a является объектом в python, и когда вы присваиваете объект переменной, т.е. b = a , тогда новый объект не создан b указывает на тот же объект (область памяти), что и a .

См. следующее выполнение для лучшего понимания.

enter image description here enter image description here enter image description here

0 голосов
/ 29 февраля 2020

В python объекты, такие как list, set и dict, являются изменяемыми. Это означает, что вы можете изменить их содержание без изменения их личности. Случай здесь выглядит аналогично. В основном, начало относится к fli. Поэтому внесение любых изменений в начало также изменит значения в fli.

0 голосов
/ 29 февраля 2020
  • 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...