2014-07-14 6 views
1

Моя проблема связана со статистикой и созданием динамического числа переменных в Python.Как создать динамическое число переменных?

У меня есть набор данных значений от 0 до 100.

Если пользователь вводит 5 верхних пределов, 20, 40, 60, 80, 100, программа должна сортировать значения в 5 классах, list1, list2, list3, list4, list5. Если пользователь вводит 4 верхних предела, 25, 50, 75, 100, программа должна сортировать значения в 4 классах, list1, list2, list3, list4.

Затем мне нужно найти среднее значение для каждого списка, например, list1Average, list2Average, list3Average, list4Average и сохранить эти средние значения в другом списке, averageList.

Наконец, мне нужно вычесть среднее значение для каждого соответствующего класса (list1Average, list2Average, list3Average, list4Average) из каждого значения в наборе данных. то есть вычесть list1Average из каждого значения в списке1, вычесть list2Average из каждого значения в списке2 и т. д. и сохранить эти производные значения в еще одном списке classVarianceList.

Мне удалось сделать все это довольно легко, но только когда число верхних пределов класса статично (я могу просто сделать class1.append (i), class2.append (i) и т. Д.). Но теперь я схожу с ума, пытаясь понять, как это сделать, когда количество классов может быть определено пользователем. Основная проблема заключается в создании динамического количества переменных (списков) для хранения значений и выполнения вычислений.

Я также читал словари Python (потому что каждый говорит, что нужно использовать словари для динамического создания переменных), и, хотя я понимаю, что он связывает ключ с ценностью, я просто не могу для жизни, выяснить, как включить это в то, что я хочу делать.

Благодарим за помощь!

+4

Добро пожаловать в SO, пожалуйста, примите [* tour *] (http://stackoverflow.com/tour), чтобы узнать, как и какие вопросы следует представлять здесь. – alfasin

+0

Возможный дубликат [Как создать списки из списка строк?] (Http://stackoverflow.com/questions/14241133/how-can-i-create-lists-from-a-list-of-strings) – davidism

ответ

0

Используйте списки

my_list = [] 
my_listAverage = [] 
my_class = [] 

, то вы можете иметь любое количество элементов

my_list[0] 
my_list[1] 
my_list[2] 

my_list1Average[0] 
my_list1Average[1] 
my_list1Average[2] 

my_class[0] 
my_class[1] 
my_class[2] 

Вы можете использовать двумерный список

my_class[0] = [] 

my_class[0].append(...) 

my_class[0][0] 
0

Словари хорошо, если у вас есть показатели, которые это строки, и вам не нужно их составлять. Поэтому, если вы работаете по имени или что-то, словарь прост в использовании.

Если вы просто используете номера, я бы составил список списков. Вы можете быстро настроить список из N элементов, выполнив, например. list_of_lists = N * []. Вы можете заполнить каждый список данными. Управляйте небольшим вторым списком параллельно, с максимальными значениями каждого из подписок.

Выполнение этого вручную может быть немного утомительным, но если вы определите класс для того, что вы делаете, вы можете скрыть сложность в классе и легко его повторно использовать.

Смежные вопросы