Найти - Пользователи
Полная версия: как создать вложенный список через цикл for
Начало » Python для новичков » как создать вложенный список через цикл for
1 2
Vasiliy
Помогите с вопросом: нужно создать список, состоящий из вложенных списков.Кусок кода такой:
list1=
L1=
#print('словарь 1')
for x in range (0,10):
L1.append(ds)
L1.append(quants)
L1.append(d.rate)
L1.append(d.trans)
L1.append(d.bonus)
L1.append(b)

list1.append(L1)

В результате должен получится список list1 состоящий из вложенных списков L1,он и создается, но в L1 каждый раз добавляется новое значение L1 вместе с предыдущим.

Как обнулять список L1 перед каждым новых вызовом цикла, чтобы в него писались только новые значения списка?
MiK
Vasiliy
тебе сначала надо создать НЕПУСТОЙ список list1
# Список из трёх вложенных списков
list1 = [[], [], []]
# Из одного вложенного.
list1 = [[]]

Последнюю строчку надо так:
list1[0].append(L1)

Иначе ты попросту увеличиваешь, изначальный список, а не вкладываешь в него новый.
Vasiliy
Так как вы написали, получается совсем неправильно и с ошибкой.
Помимо этого выяснил что в массив list1 заносится все время последнее вычисленное значение массива L1, а не его значение за каждый проход цикла
Vasiliy
в чем косяк?
alex925
Покажи пример того, что должно в итоге получиться.
Vasiliy
Выхлоп такой:
L1
[5, 8, 16.0, 0, 0, 107.52]
>>> list1
[[5, 8, 16.0, 0, 0, 107.52], [5, 8, 16.0, 0, 0, 107.52], [5, 8, 16.0, 0, 0, 107.52]]

как видно в список list1 заносится последний вычисленный список L1, а должен заносится каждый раз при новом заполнении списка L1.
Vasiliy
а сам код такой:
list1=[]
L1=[0,0,0,0,0,0]
print('словарь 1')
for x in range (0,3):
         
         L1[0]=ds[x]
         L1[1]=quants[x]
         L1[2]=d.rate
         L1[3]=d.trans
         L1[4]=d.bonus
         L1[5]=b[x]
         list1.append(L1)
alex925
Vasiliy
import copy
data = [5, 8, 16.0, 0, 0, 107.52]
result = []
for i in range(3):
    result.append(copy.deepcopy(data))
print(result)
MiK
Vasiliy
как видно в список list1 заносится последний вычисленный список L1, а должен заносится каждый раз при новом заполнении списка L1.

Потому что метод append, добавляет в конец списка. Если тебе надо, что бы старый заменялся новым, просто присваивай.

MiK
Я кажется понял - ты не можешь присвоить. Если нужно сделать копию списка, тогда так:
list1 = L1[:]

Угадал?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB