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