Skip to content

Instantly share code, notes, and snippets.

@vishal-keshav
Created February 14, 2019 04:45
Show Gist options
  • Save vishal-keshav/6bd600195a4c0c45e4dbfff1152d9dd8 to your computer and use it in GitHub Desktop.
Save vishal-keshav/6bd600195a4c0c45e4dbfff1152d9dd8 to your computer and use it in GitHub Desktop.
Python lambda(reduce), namedtuple(collections) and deque(collections), all in one program

Namedtuple and deque

below program takes in a list of student data and prints the average marks.

input to the program

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

expected outpur

81.00

code

# Hello World program in Python
    
nr_students = int(raw_input())
keys = raw_input().split()

from collections import namedtuple
from collections import deque

student_data_point = namedtuple('student_data_point',keys)
student_data = deque() # No limitation on queue size
for i in range(nr_students):
    student_data_point_raw = raw_input().split()
    data_point_value = {}
    for index, key in enumerate(keys):
        data_point_value[key] = student_data_point_raw[index]
    student_data.append(student_data_point(ID = data_point_value['ID'],
                                           NAME = data_point_value['NAME'],
                                           MARKS = data_point_value['MARKS'],
                                           CLASS = data_point_value['CLASS']))

average_marks = reduce(lambda x,y: x+y, [int(data.MARKS) for data in student_data])
average_marks = float(average_marks)/float(len(student_data))
print(average_marks)

source

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment