Форум сайта python.su
При таком коде:
a = [[], []] a[1].append(1) print(a)
[[], [1]]
ans = [[]]*5 arr = [4,1,3,2,5] N=5 count = N*1 for i in range(N): if arr[i] == count: print("i = ", i," count = ",count) print(ans) ans[i].append(count) print(ans)
i = 4 count = 5 [[], [], [], [], []] [[5], [5], [5], [5], [5]]
Отредактировано Skatoro (Май 21, 2021 14:22:26)
Офлайн
ans[2] = count
Офлайн
AD0DE412Исправил
Офлайн
ага
все дело в
ans = [[]]*5
ans = [[], [], [], [], []]
Офлайн
потому что операции над списками ссылочные, и умножая список на 5, вы получаете не 5 новых списков, а пять ссылок на один и тотже список.
>>> lst=[1,2,3] >>> lst [1, 2, 3] >>> incl_lst=[lst]*5 >>> incl_lst [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]] >>> lst[1]=100 >>> lst [1, 100, 3] >>> incl_lst [[1, 100, 3], [1, 100, 3], [1, 100, 3], [1, 100, 3], [1, 100, 3]] >>>
[code python][/code]
Отредактировано PEHDOM (Май 21, 2021 16:38:32)
Офлайн