List Comprehension Examples
Survey Results
All participants were asked to either Thumbs up or Thumbs down the following examples for readability. This was followed up with a discussion of what if mean to be readable for Comprehensions.
Survey Questions
Example 1
return [course for course in courses if course['uuid'] not in courses_with_entitlements]
Example 2
user_run_enrollments = [ CourseEnrollment.get_enrollment(user, CourseKey.from_string(course_run.get('key'))) for course_run in course_runs if CourseEnrollment.get_enrollment(user, CourseKey.from_string(course_run.get('key'))) ]
Example 3
upgradeable_enrollments = [ enrollment for enrollment in user_run_enrollments if enrollment.is_active and enrollment.upgrade_deadline and enrollment.upgrade_deadline > timezone.now() ]
Example 4
self.course_keys = [course.id for course in self.courses]
Example 5
mock_course_grade.side_effect = [ Exception("Error for {}.".format(student.username)) if student.username in ['student3', 'student4'] else mock_course_grade.return_value for student in self.students ]
Example 6
# Status contains information about Primary/Secondary, so we iterate that list # But we want to return config for that host, not status (since this is the config module), # this is the inner loop of the comprehension, where we match on the hostname (could also # match on _id). primary = [ c for m in status['members'] if m['stateStr'] == 'PRIMARY' for c in rs_config['members'] if m['name'] == c['host'] ] secondary = [ c for m in status['members'] if m['stateStr'] == 'SECONDARY' for c in rs_config['members'] if m['name'] == c['host'] ] # we're parsing the config directly here, much simpler hidden = [ m for m in rs_config['members'] if m['hidden'] ]
Example 7
course_modes_by_course = { course_id: { mode.slug: mode for mode in modes } for course_id, modes in unexpired_course_modes.iteritems() }
Example 8
courseware = [{ 'chapter_name': c.display_name_with_default_escaped, 'sections': [{ 'section_name': s.display_name_with_default_escaped, 'clickable_tab_count': len(s.get_children()) if (type(s) == seq_module.SequenceDescriptor) else 0, 'tabs': [{ 'children_count': len(t.get_children()) if (type(t) == vertical_block.VerticalBlock) else 0, 'class': t.__class__.__name__} for t in s.get_children() ] } for s in c.get_children() if not s.hide_from_toc] } for c in chapters]
Example 9
output_rows = [ [ ','.join(status_dict.get(column_name, '')) if (column_name == 'Learners Not Found' or column_name == 'Invalid Email Addresses' or column_name == 'Preassigned Learners') else status_dict[column_name] for column_name in output_header ] for _cohort_name, status_dict in cohorts_status.iteritems() ] output_rows.insert(0, output_header)
Example 10
return [ { "name": link_name, "title": link_title, "url": link_url, } for link_name, link_url, link_title in [ ("about", marketing_link("ABOUT"), _("About")), ("enterprise", marketing_link("ENTERPRISE"), _("{platform_name} for Business").format(platform_name=platform_name)), ("blog", marketing_link("BLOG"), _("Blog")), ("news", marketing_link("NEWS"), _("News")), ("help-center", settings.SUPPORT_SITE_LINK, _("Help Center")), ("contact", marketing_link("CONTACT"), _("Contact")), ("careers", marketing_link("CAREERS"), _("Careers")), ("donate", marketing_link("DONATE"), _("Donate")), ] if link_url and link_url != "#" ]