code_junkie

How do I efficiently filter computed values within a Python list comprehension?

Nov 11th, 2011
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. result = [x**2 for x in mylist if type(x) is int]
  2.  
  3. result = [expensive(x) for x in mylist if expensive(x)]
  4.  
  5. result = filter (None, map (expensive, mylist))
  6.  
  7. result = [y for y in (expensive(x) for x in mylist) if y]
  8.  
  9. result = [x for x in map(expensive,mylist) if x]
  10.  
  11. def gen_expensive(mylist):
  12. for item in mylist:
  13. result = expensive(item)
  14. if result:
  15. yield result
  16.  
  17. result = (expensive(x) for x in mylist)
  18. result = (do_something(x) for x in result if some_condition(x))
  19. ...
  20. result = [x for x in result if x] # finally, a list
  21.  
  22. itertools.ifilter(bool, (expensive(x) for x in mylist))
  23.  
  24. result = []
  25. for x in mylist:
  26. expense = expensive(x)
  27. if expense:
  28. result.append(expense)
Add Comment
Please, Sign In to add comment