python的函数

python对passwd进行排序的代码

#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
 Time      :2018/04/10  21:28
 Author    : shanwu
 File Name :0410.py
-------------------------------------------------
"""

with open("passwd","r+") as f:
    j=sorted(f.readlines(),key=lambda i:int(i.split(":")[2]))

with open("newpasswd","w+") as w:
    w.writelines(j)

#查看newpasswd文件
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
zabbix:x:996:994:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
nginx:x:1000:1000::/home/nginx:/sbin/nologin

高阶函数

高阶函数就是把函数当做参数传递的函数。

map()的使用

  • map()会根据提供的函数对指定序列做映射。
    第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
  • map的形式
    map(function, iterable, ...)
    function是一个函数
    iterable是一个或者多个序列(后面几个序列,前面的函数就要有几个参数传入)
  • python3返回的是一个迭代器

  • 例子

from collections import Iterable


def f(x):
    return x*x

a=map(f,[1,2,3])
print(a)
print(type(a))
print(isinstance(a,Iterable))
for i in a:
    print(i)

# 输出
<map object at 0x000001A72F20DF60>
<class 'map'>
True
1
4
9

reduce()的使用

reduce()的使用方法:reduce(f(x),Itera)。它的形式和map()函数一样。不过参数f(x)必须有两个参数。reduce()函数作用是:把结果继续和序列的下一个元素做累积计算。
- 例子

from functools import reduce

def f(x,y):
    return x*y

a=reduce(f,[1,2,3])
print(a)

#输出
6

filter()的使用

  • filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
    该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
  • filter的语法
    filter(function, iterable)
  • 参数
    function – 判断函数。
    iterable – 可迭代对象。

  • 例子

a=filter(lambda x: x % 2==0,[1,2,3,4,5,6])
for i in a:
    print(i)

# 输出
2
4
6
  • sorted()
    sorted()对所有可迭代的对象排序
  • sorted的语法
    sorted(iterable, key=None, reverse=False)
  • 参数说明:
    iterable – 可迭代对象。
    key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
    reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
  • 对字典的排序例子
l=dict(a=1,b=3,c=2)
k=sorted(l.items())
print(k)
m=sorted(l.items(),key=lambda i:int(i[1]))
print(m)

#输出
[('a', 1), ('b', 3), ('c', 2)]
[('a', 1), ('c', 2), ('b', 3)]

生成器

  • 生成式
[x*x for x in xrange(10) if x*x%2 == 0]
  • 生成器
  • 方法一:
    (exp for val in collection if condition)
  • 方法二:
    使用yield关键字,包含yield语句的函数会被特地编译成生成器。
    yield可以理解成return,但是并不退出,只是挂起,恢复的时候从yield下面开始执行。
a=(i*i for i in range(4) if i%2==0)
print(next(a))
print(next(a))
#输出
0
4
def f(x):
    for i in range(x):
        yield i

b=f(3)
print(next(b))
print(next(b))
print(next(b))
#输出
0
1
2

猜你喜欢

转载自blog.csdn.net/wushan1992/article/details/79947388