Skip to content

Instantly share code, notes, and snippets.

@mjgpy3
Created August 6, 2016 18:00
Show Gist options
  • Save mjgpy3/5d48ec4a93c96d1732df71b047191fce to your computer and use it in GitHub Desktop.
Save mjgpy3/5d48ec4a93c96d1732df71b047191fce to your computer and use it in GitHub Desktop.
Selecting columns
foo.py select-column.py X
values = [
[1, 10, 20, 30, 40],
[2, 10, 21, 31, 41],
[3, 11, 22, 32, 42],
[4, 10, 23, 33, 43],
]
def matches_10(row):
return row[1] == 10
matches_10 = lambda row: row[1] == 10
def index_is(idx, value):
return lambda row: row[idx] == value
filtered = filter(lambda row: row[1] == 10, values)
def my_filter(predicate, values):
results = []
for value in values:
if predicate(value):
results.append(value)
return results
filtered2 = [row for row in values if row[1] == 10]
print filtered2
print filter(index_is(1, 10), values)
# How we get to things like index_is
# 1
def specific(values):
results = []
for row in values:
if row[1] == 10:
results.append(row)
return results
# 2 - Generic on predicated
def my_filter_2(predicate, values):
results = []
for row in values:
if predicate(row):
results.append(row)
return results
def matches_10(row):
return row[1] == 10
specific = my_filter_2(matches_10, values)
# 3 - generic on matches_10
def build_predicate_equals_at(idx, value):
return lambda row: row[idx] == value
class Person:
get_name = lambda self: 'Danny'
dan = Person()
print dan.get_name()
print Person.get_name(Person())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment