Skip to content

Instantly share code, notes, and snippets.

@showell
Created November 10, 2012 21:34
Show Gist options
  • Save showell/4052606 to your computer and use it in GitHub Desktop.
Save showell/4052606 to your computer and use it in GitHub Desktop.
Python Sequences Chart
<table border=1 cellpadding=5>
<tr>
<th>&nbsp;</th>
<th>Lists</th>
<th>Iterators</th>
</tr>
<tr>
<th>Expressive</th>
<td>
<pre>
result = [x*2 for x in lst]
</pre>
</td>
<td>
<pre>
result = (x*2 for x in lst)
</pre>
</td>
</tr>
<tr>
<th>Imperative</th>
<td>
<pre>
result = []
for x in lst:
result.append(x*2)
</pre>
</td>
<td>
<pre>
def result_iter():
for x in lst:
yield x * 2
result = result_iter()
</pre>
</td>
</tr>
<tr>
<th>Generalize</th>
<td>
<pre>
def map(f, lst):
result = []
for item in lst:
result.append(f(item))
return result
</pre>
</td>
<td>
<pre>
def imap(f, lst):
for item in lst:
yield f(item)
</pre>
</td>
</tr>
<tr>
<th>Functional</th>
<td>
<pre>
def double(x):
return x * 2
result = map(double, lst)
</pre>
</td>
<td>
<pre>
def double(x):
return x * 2
result = itertools.imap(double, lst)
</pre>
</td>
</tr>
<tr valign="top">
<th>Built ins</th>
<td>
<pre>
lst[start:end]
map(f, lst)
filter(f, lst)
any
all
sum
len(lst)
</pre>
</td>
<td>
<pre>
itertools.islice(seq, start, stop)
itertools.imap(f, seq)
itertools.ifilter(f, seq)
any
all
sum
itertools.ichain
itertools.dropwhile
itertools.groupby
itertools.tee
itertools.takewhile
</pre>
</td>
</tr>
</table>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment