2015-02-02 6 views
0

У меня есть следующий код для открытия файла, сортировки его по столбцу и последующего добавления к нему значения. Тем не менее, я не могу получить цикл for для итерации по каждой из строк ... x = list(map(int, sortedlist[1:][1][1:])) Я устал менять 1 на счетную переменную с именем y, но это не сработало.Итерация через список - Python 3

Вот как выглядит файл и код ниже.

Lee,6,3,4 
John,11,10,8 
Luke,2,3,8 
Terry,4,7,6 


import sys, csv, operator 
from statistics import mean 

#Sorts list 
reader = csv.reader(open("O:\\Class 1.csv"), delimiter=",") 
sortedlist = sorted(reader, key=operator.itemgetter(1), reverse=True) 

#Appends average to the end of each row. 
for sublist in sortedlist: 
    x = list(map(int, sortedlist[1:][1][1:])) #HERE'S THE PROBLEM! 
    x = mean(x) 
    sublist.append(x) 
    print(sublist) 
print(sortedlist) 
+1

Что вы ожидаете 'sortedlist [1:] [1] [1:]' делать? – jwodder

+0

Вы не имеете в виду что-то вроде: x = mean (int (y) для y в подсписке [1:])? – LexyStardust

+0

Кроме того, это домашнее задание? .. – LexyStardust

ответ

0

Вы хотите, чтобы получить среднее значение каждого подсписка так использовать каждый подсписок не SortedList:

for sublist in sortedlist: 
    x = mean(map(int, sublist[1:])) #HERE'S THE PROBLEM! 
    sublist.append(x) 
    print(sublist) 
print(sortedlist) 

[['Lee', '6', '3', '4', 4.333333333333333], ['Terry', '4', '7', '6', 5.666666666666667], ['Luke', '2', '3', '8', 4.333333333333333], ['John', '11', '10', '8', 9.666666666666666]] 

Если вы хотите, среднее значение всех списков в сочетании вы можете использовать itertools.chain извлечения всех элементов/ints из каждого ряда и связывая их вместе:

+0

Спасибо, что сработало отлично. – InSomniac007

+0

Нет, пожалуйста. –

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