Collections.namedtuple() Практический вопрос Python
collections.namedtuple()
По сути, namedtuples — это легкие в создании типы объектов.
Они превращают кортежи в удобные контейнеры для простых задач.
С именованными кортежами вам не нужно использовать целочисленные индексы для доступа к членам кортежа.
Пример :
Код 01
>>> from collections import namedtuple
>>> Point = namedtuple('Point','x,y')
>>> pt1 = Point(1,2)
>>> pt2 = Point(3,4)
>>> dot_product = ( pt1.x * pt2.x ) +( pt1.y * pt2.y )
>>> print dot_product
11
>>> from collections import namedtuple
>>> Car = namedtuple('Car','Price Mileage Colour Class')
>>> xyz = Car(Price = 100000, Mileage = 30, Colour = 'Cyan', Class = 'Y')
>>> print xyz
Car(Price=100000, Mileage=30, Colour='Cyan', Class='Y')
>>> print xyz.Class
Y
У доктора Джона Уэсли есть электронная таблица, содержащая список идентификаторов учащихся, оценок, класса и имени.
Ваша задача - помочь доктору Уэсли рассчитать средние оценки учеников.
Примечание:
1. Столбцы могут быть в любом порядке. Идентификаторы, метки, класс и имя могут быть записаны в любом порядке в электронной таблице.
2. Имена столбцов: ID, MARKS, CLASS и NAME. (Написание и тип регистра этих имен не изменятся.)
Формат ввода:
В первой строке записано целое число N — общее количество учеников.
Вторая строка содержит имена столбцов в любом порядке.
Следующие N строк содержат метки, идентификаторы, имя и класс под соответствующими именами столбцов.
Ограничения:
- 0 <= Н <= 100
Выведите средние оценки списка, скорректированные до 2 знаков после запятой.
Пример ввода:
ТЕСТ-КЕЙС 01
5
ID MARKS NAME CLASS
1 97 Raymond 7
2 50 Steven 4
3 91 Adrian 9
4 72 Stewart 5
5 80 Peter 6
5
MARKS CLASS NAME ID
92 2 Calum 1
82 5 Scott 2
94 2 Jason 3
55 8 Glenn 4
82 2 Fergus 5
ТЕСТ-КЕЙС 01
78.00
81.00
ТЕСТ-КЕЙС 01
Среднее значение = (97 + 50 + 91 + 72 + 80)/5
Сможете ли вы решить эту задачу, написав 4 строки кода или меньше?
ПРИМЕЧАНИЕ. Нет штрафа за решения, которые являются правильными, но содержат более 4 строк.
Решение
import collections
n = int(input())
scol = ','.join(input().split())
Student = collections.namedtuple('Student',scol)
sum = 0
for i in range(n):
row = input().split()
student = Student(*row)
sum += int(student.MARKS)
print(sum/n)

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































