Это потому, что списки Python являются изменяемыми и вы всегда изменяете один и тот же список.
Когда вы делаете:
steps.append(temp)
В каждой итерации вы добавляететот же список (temp
) к списку результатов steps
.Как и в каждой итерации, вы изменяете второй элемент списка temp
при выполнении
temp[1] = split[b]
В списке steps
результата будет каждый из его элементов (как они есть).все те же элементы) изменено.
Иллюстрировано:
Шаг 1
b = 0
split[b] = A
temp[1] = split[b] -> temp = "xxx, A, yyy, zzz"
steps = [temp] === ["xxx, A, yyy, zzz"]
Шаг 2
b = 1
split[b] = B
temp[1] = split[b] -> temp = "xxx, B, yyy, zzz"
steps = [temp, temp] === ["xxx, B, yyy, zzz", "xxx, B, yyy, zzz"]
Шаг 3
b = 2
split[b] = C
temp[1] = split[b] -> temp = "xxx, C, yyy, zzz"
steps = [temp, temp, temp] === ["xxx, C, yyy, zzz", "xxx, C, yyy, zzz", "xxx, C, yyy, zzz"]