Ваш желаемый результат:
[[1.5, 3.5, 2.1], [[], [], []], [[], [], []]]
?
или это?
[[[1.5], [3.5], [2.1]], [[], [], []], [[], [], []]]
?
, потому что второй является равной структурой данных, более вероятно, что вы хотите.
Тогда вам нужно не делать:
survRates[0] = 1.5
survRates[1] = 3.5
survRates[2] = 2.5
Вместо делать:
survRates[0] = []
survRates[0][0] = 1.5
survRates[0][1] = 3.5
survRates[0][2] = 2.5
или поскольку у вас есть очень специфические требования: он выглядит, как у вас опечатка в вашем вопросе: это, вероятно, что вы действительно хотели.
survRates = [[[], [], []], [[], [], []], [[], [], []]]
survRates[0][0][0] = 1.5
survRates[0][0][1] = 3.5
survRates[0][0][2] = 2.5
Таким образом, каждый массив будет массивом только с одним элементом ... поскольку я уверен в гнусных целях.
Вы не были точно описывающие то, что хотели:
Вы хотите установить позицию 0 (первый элемент), в списке, но не список survRates, но вместо этого списка в списке survRates's
первого элемента (трехкратно вложенная !). Таким образом, для вложенных списков, таких как survRates, для доступа к первому элементу первого списка, который вы используете: an_array[0][0][0] =
только что делает an_array[0] =
или an_array[0][0] =
, попытается установить первый элемент списка оставшихся неперехваченных списков или первого списка этого списка.
Эта часть генерирует: [[[], [], []], [[], [], []], [[], [], []]]
def gens():
for i in range(totalGens):
dataSet = []
for j in range(3):
dataSet.append([])
newList.append(dataSet)
print(newList)
Если вы хотите помочь в дальнейшем здесь объяснить, что происходит немного глубже.
newAdults = juvs * survRates[0][0]
Наличие жёстко survRates[0][0]
возвращает список не элемент, вероятно, маловероятно, что вы хотите умножить juvs списком с 3-математических элементов, вероятно, вы хотите survRates[0][0][0]
там.
UPDATE ==> Так как они говорят, что они особенно хотят его иметь 1 массив в первом списке данных и 3 массивы в каждом последующем DataList:
Генс() функция должна быть изменена:
def gens():
for i in range(totalGens):
dataSet = []
for j in range(3):
if i > 0:
dataSet.append([])
newList.append(dataSet)
print(newList)
теперь мы будем иметь =>
[[], [[], [], []], [[], [], []]]
Эта часть в начале вашего поста все равно выдаст ошибку:
survRates[0] = 1.5
survRates[1] = 3.5
survRates[2] = 2.5
Но будет работать это:
survRates[0][0] = 1.5
survRates[0][1] = 3.5
survRates[0][2] = 2.5
Я хотел бы ввести значения 1.5.3.5 и 2.1 в выходы, как и "[[1.5, 3.5, 2.1], [[], [], []], [[], [], [] ]] '. [Здесь ссылка на мой предыдущий вопрос с выбранным ответом] (http://stackoverflow.com/questions/40250819/python-multiplying-an-element-from-2d-list). Я думаю, что оба эти вопроса связаны. – Test1234
, но почему такая неравномерная структура данных? иногда вам нужен список из 3-х элементов, а иногда и список из 3-х списков внутри? вы уверены, что, возможно, словарь не является предпочтительным? например: 'survRates.adultRates = [1.5, 3.5, 2.1]' или что-то, а затем еще один ключ с 'survRates.unknownKey = [[], [], []]' похоже, что он будет путать вас реже. Чтобы помнить, как часто гнездо: в любом случае ваш код gens() делает сбалансированный список списков, потому что он сгенерирован в простом цикле ... если вы действительно хотите, чтобы первый элемент в списке был особым, исключите его из этого цикла. – Zargold
Извините за путаницу. Я закончил тем, что использовал простой цикл, как мой код gens, и, похоже, он работал. Все равно, спасибо за помощь – Test1234