Skip to content

Instantly share code, notes, and snippets.

@miped
Created December 10, 2012 19:32
Show Gist options
  • Save miped/4252767 to your computer and use it in GitHub Desktop.
Save miped/4252767 to your computer and use it in GitHub Desktop.
List comprehensions demo
# coding: utf-8
# Lidt data at lege med
letters = ['a', 'b', 'c', 'd', 'e']
numbers = range(5)
products = [{'name': 'Product 1', 'size': 'Large'},
{'name': 'Product 2', 'awesome': True}]
class Product(object):
def __init__(self, name, size=None, awesome=False):
self.name = name
self.size = size
self.awesome = awesome
def __repr__(self):
return "<Product: %s size: %s awesome: %s>" % (self.name, self.size, self.awesome)
@classmethod
def from_dict(cls, data):
return cls(data['name'], size=data.get('size'),
awesome=data.get('awesome'))
# simpel list comprehension
numbers_squared = [x * x for x in numbers]
# list comprehensions med en liste af 2-størrelse lister
numbers_letters = ["%s: %s" % (n, l) for n, l in zip(numbers, letters)]
# list comprehensions kun lige tal
even_numbers = [x for x in numbers if x % 2 == 0]
# byg en liste products på den besværlige måde
p1 = [Product(p['name'], size=p.get('size'), awesome=p.get('awesome', False))
for p in products]
print p1
# brug kwargs expansion til at gøre det kortere
p2 = [Product(**p) for p in products]
print p2
# kun awesome produkter
p3 = [Product(**p) for p in products if p.get('awesome') == True]
print p3
# fra "xml" (shh. det er i virkeligheden en dict)
p4 = [Product.from_dict(p) for p in products]
print p4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment