2016-11-28 5 views
0

Ok код, созданный, который выводит таблицу, как это:Среднее значение столбца таблицы в питона

[['    ' '  Scarface ' '  Godfather' '  Avatar'] 
['Al Pachino ' '    1' '    1' '   -1'] 
['Marlon Brando ' '   -1' '    1' '   -1'] 
['De Niro  ' '   -1' '    1' '   -1'] 
['Sigorny Weaver' '   -1' '   -1' '    1']] 

Как получить среднее значение столбца таблицы, написав функцию, аргументы таблица целых чисел A и положительное целое число i. Функция должна возвращать среднее значение неотрицательных значений столбца i из A.

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

Благодаря Джемма

+0

Вы что-то пробовали? Где ваш код? – Godiez

+0

Не могли бы вы предоставить полный пример (используя данные вашей таблицы) того, что вы хотите? –

+0

Что такое «таблица»? Здесь у вас есть список списков, в которых каждый подсписщик содержит одну строку. –

ответ

2

Чтобы получить среднее по формуле <ONLY-POSITIVE-VALUES>/<ALL-INTEGER-COLUMS>

data = [ 
    ['    ', '  Scarface ', '  Godfather', '  Avatar'], 
    ['Al Pachino ', '    1', '    1', '   -1'], 
    ['Marlon Brando ', '   -1', '    1', '   -1'], 
    ['De Niro  ', '   -1', '    1', '   -1'], 
    ['Sigorny Weaver', '   -1', '   -1', '    1'] 
] 

def compute_average(row): 
    average = 0 
    count = 0 
    for column in row: 
     count += 1 
     try: 
      value = int(column) 
     except ValueError: 
      continue 

     if value > 0: 
      average += value 

    return float(average)/count 

for row in data[1:]: 
    print compute_average(row) 

Если вам нужна формула, как <ONLY-POSITIVE-VALUES>/<ALL-POSITIVE-VALUES-COLUMS> просто переместить count += 1 линию от вершины for цикла к if value > 0 заявления.

Элемент try/except состоит только из-за того, что Python вызывает ошибку при попытке выполнить синтаксический анализ целой цельной цепочки, что позволяет получать любые данные и просто пропускать нецелые.

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