Python 杂记:内置函数(filter、map、sorted等)

注:本文仅列举了几个常用的内置函数,更多内置函数请参考官方文档:https://docs.python.org/3/library/functions.html

filter

函数原型:

filter(function, iterable)

示例:过滤掉偶数,只保留基数,代码如下:

foo = [1, 2, 3, 4, 5]
bar = filter(lambda x: True if x%2 else False, foo) # 相当于 perl 中的 @bar = grep { $_ % 2 } @foo
print bar   # [1, 3, 5]

map

perl 中 map() 方法可以用于对数组元素进行批量操作,例如:

my @foo = (1, 2, 3, 4, 5);
my @bar = map { $_ * 2 } @foo;  # (2, 4, 5, 8, 10)
my %qux = map { $_ => ($_ % 2 ? "odd" : "even") } @foo;
    # (1=>"odd", 2=>"even", 3=>"odd", 4=>"even", 5=>"odd")

python 中类似的实现如下:

foo = [1, 2, 3, 4, 5];
bar = map(lambda x: x*2, foo)   # [2, 4, 5, 8, 10]
qux = dict(map(lambda x: [x,"odd" if x%2 else "even"], foo))
    # {1: 'odd', 2: 'even', 3: 'odd', 4: 'even', 5: 'odd'}

Python 中 map() 可以传入多个序列参数,例如:

foo = [1, 3, 5, 7, 9];
bar = [2, 4, 6, 8, 10];
qux = map(lambda x,y: x+y, foo, bar) # [3, 7, 11, 15, 19]

reduce

示例:

foo = [1, 2, 3, 4, 5]
bar = reduce(lambda x,y: x+y, foo)
print bar   # 15,相当于执行了 (((1+2)+3)+4)+5

sorted

函数原型:

sorted(iterable, *, key=None, reverse=False)

其中:

  • key 参数用于指定一个函数,通过它来计算进行比较的目标值
  • reverse 参数用于控制“降序”还是“升序”排列(默认“升序”)

示例:假设有个学生信息列表,现在对他们按年龄进行排序,最终输出姓名列表,代码如下:

students = [
    { "name": "Jack",  "age": 23 },
    { "name": "Linda", "age": 21 },
    { "name": "Smith", "age": 22 },
    { "name": "Lucy",  "age": 21 },
    { "name": "Jason", "age": 22 },
]
names = map(
    lambda x: x["name"], 
    sorted(students, key = lambda s: s["age"])  # key 参数在 sorted() 中计算用于进行比较的目标
)
print(names)    # ['Linda', 'Lucy', 'Smith', 'Jason', 'Jack']

join

Python 中没有类似 perl 中的内置函数,不过可以通过字符串方法实现,例如:

students = ['Linda', 'Lucy', 'Smith', 'Jason', 'Jack']
names = ", ".join(students) # 返回一个字符串
print(names)    # Linda, Lucy, Smith, Jason, Jack

reversed

函数原型:

reversed(seq)
posted @ 2020-02-21 07:35  itwhite  阅读(248)  评论(0编辑  收藏  举报