filter, sort

def is_odd(n):
    return n % 2 == 1
t = list(filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]))
print(t)
#注意到filter()函数返回的是一个Iterator,也就是一个惰性序列,所以要强迫filter()完成计算结果,需要用list()函数获得所有结果并返回list。
def not_empty(s):
    return s and s.strip()
g = ['A', '', 'B', None, 'C', ' ']
print(g)
t = list(filter(not_empty, g))
print(t)

s = '       rain       '
print(s.strip())

t = 'www.example.com'.strip('comowle.z')
print(t)

def _odd_iterator():
    n = 1
    while(True):
        n = n + 2
        yield n
def _not_divisible(n):
    return lambda x : x % n > 0
def primes():
    it = _odd_iterator()
    yield 2
    while(True):
        n = next(it)
        yield n
        it = filter(_not_divisible(n), it)

for n in primes():
    if n < 1000:
        print(n)
    else:
        break

上面是filter

下面是sort

t = sorted([1, 5, 6, -19, 54])
print(t)

t = sorted([1, 5, 6, 7, -19, 54], key = abs)
print(t)

#忽略大小写对首字母的顺序进行排序,实际上是根据ascii码进行排序
t = sorted(['rain', 'SUN', 'rainbow', 'Thinker'], key = str.lower)
print(t)
#要实现反向排序,不必更改key函数,可传入第三个参数,reverse = True

t = sorted(['rain', 'SUN', 'rainbow', 'Thinker'], key = str.lower, reverse = True)
print(t)

L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]

#按名字排序
def by_name(t):
    #其中t[0]是t的名字,比如Bob,t[1]是t的分数,比如75
    return t[0]
L2 = sorted(L, key=by_name)

print('按照成绩排序', L2)
#按照成绩排序
def by_score(t):
    return t[1]
L2= sorted(L, key = by_score, reverse = True)
print('按照分数排序', L2)

 

posted on 2016-06-03 09:55  张明明_1  阅读(176)  评论(0编辑  收藏  举报

导航