常用函数


map函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
格式:
map(func, seq1[, seq2,…])
第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。
Python函数编程中的map()函数是将func作用于seq中的每一个元素,并将所有的调用的结果作为一个list返回。如果func为None,作用同zip()。
#使用lambda
>>> print map(lambda x: x % 2, range(7))
[0, 1, 0, 1, 0, 1, 0]
一个seq时,可以使用filter()函数代替
当seq多于一个时,map可以并行(注意是并行)地对每个seq执行
每个seq的同一位置的元素同时传入一个多元的func函数之后,得到一个返回值,并将这个返回值存放在一个列表中
>>> print map(lambda x , y : x ** y, [2,4,6],[3,2,1])
[8, 16, 6] #执行过程[2**3,4**2,6**1]
>>> print map(lambda x , y : (x ** y, x + y), [2,4,6],[3,2,1])
[(8, 5), (16, 6), (6, 7)]
>>> print map(None, [2,4,6],[3,2,1]) #func为NONE时,就同zip一样了
[(2, 3), (4, 2), (6, 1)]

其他用法例子:
***将元组转换成list***
>>> map(int, (1,2,3))
[1, 2, 3]
***将字符串转换成list***
>>> map(int, '1234')
[1, 2, 3, 4]
***提取字典的key,并将结果存放在一个list中***
>>> map(int, {1:2,2:3,3:4})
[1, 2, 3]
***字符串转换成元组,并将结果以列表的形式返回***
>>> map(tuple, 'agdf')
[('a',), ('g',), ('d',), ('f',)]
#将小写转成大写
def u_to_l (s):
return s.upper()
print map(u_to_l,'asdfd')

zip函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
zip函数返回一个以元组为元素的列表,其中第 i 个元组包含每个参数序列的第 i 个元素。返回的列表长度被截断为最短的参数序列的长度。只有一个序列参数时,它返回一个1元组的列表。没有参数时,它返回一个空的列表。
概括起来一句话:zip函数返回的是一个列表,但是列表里面的元素是由一个个元组构成的..
做机器学习分类的时候,就可以利用zip函数,将我们的数据点与我们的数据点对应的标签进行关联..
#例一:
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = zip(x, y, z)
print xyz
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
#例二:
x = [1, 2, 3]
x = zip(x)
print x
[(1,), (2,), (3,)]
#例三:
x = zip()
print x
[]
#例四:
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = zip(x, y, z)
u = zip(*xyz)
print u
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
一般认为这是一个unzip的过程,它的运行机制是这样的:
在运行zip(*xyz)之前,xyz的值是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
那么,zip(*xyz) 等价于 zip((1, 4, 7), (2, 5, 8), (3, 6, 9))
所以,运行结果是:[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
#例五:
x = [1, 2, 3]
r = zip(* [x] * 3)
print r
[(1, 1, 1), (2, 2, 2), (3, 3, 3)]
它的运行机制是这样的:
[x]生成一个列表的列表,它只有一个元素x
[x] * 3生成一个列表的列表,它有3个元素,[x, x, x]
zip(* [x] * 3)的意思就明确了,zip(x, x, x)

random

1
2
3
4
5
6
7
8
9
10
11
import random
result1=random.random() #随机生成一个浮点数[0,1)
result2=random.randint(1, 10) #产生1-10的一个随机整数,包含1和10
result3=random.uniform(1.1, 2.1) #产生1.1-2.2之间的随机浮点数
result4=random.choice("python") #参数是一个可以迭代的类型,从参数中随机选一个元素
result5=random.randrange(1,50,2) #随机产生1-50,间隔为2随机整数,左闭右开,不包含50
test_list=[1,2,3,4,5]
random.shuffle(test_list) #需要注意的是这个操作是在原来参数的基础上操作的,不会返回新的数据
print("test_list:"+str(test_list))
test_list:[3, 4, 1, 5, 2] #shuffle就是将原有列表的顺序打乱,也就是重新洗牌的功能
random.sample(seq,n) #可以从指定的序列中,随机的截取指定长度的片断,不作原地修改。

os模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#当前使用平台:
os.name #返回当前使用平台的代表字符,Windows用'nt'表示,Linux用'posix'表示

#当前路径和文件
os.getcwd() #返回当前工作目录
os.listdir(path) #返回path目录下所有文件列表

#abspath() 将相对路径转化为绝对路径
path = './boys'#相对
result = os.path.abspath(path)
print(result)

#系统操作:
os.system() #运行shell命令
>>>os.system('cmd') #Windows下打开终端
>>>os.system('ls') #Linux下查看当前目录所有文件

#查看文件名或目录:
os.path.split(path) #将path的目录和文件名分开为元组,split() 将一个完整的路径切割成目录部分和主体部分
os.path.join(path1,path2,...) #将path1,怕path2,...进行组合,若path2为绝对路径,则会将path1删除
os.path.dirname(path) #返回path中的目录(文件夹部分),结果不包含'\'
os.path.basename(path) #返回path中的文件名
#dirname() 获取完整路径当中的目录部分 & basename()获取完整路径当中的主体部分

#创建目录:
os.mkdir(path) #创建path目录(只能创建一级目录,如'F:\XXX\WWW'),在XXX目录下创建WWW目录
os.makedirs(path) #创建多级目录(如'F:\XXX\SSS'),在F盘下创建XXX目录,继续在XXX目录下创建SSS目录

#删除文件或目录:
os.remove(path) #删除文件(必须是文件)
os.rmdir(path) #删除path目录(只能删除一级目录,如'F:\XXX\SSS'),只删除SSS目录,只能删除空目录
os.removedirs(path) #删除多级目录(如'F:\XXX\SSS'),必须为空目录,删除SSS、FFF目录

#更改路径:
os.chdir(path) #将当前工作目录更改为指定路径path

#查看文件时间:
os.path.getmtime(path) #返回文件或目录的最后修改时间,结果为秒数
os.path.getatime(path) #返回文件或目录的最后访问时间,结果为秒数
os.path.getctime(path) #返回文件或目录得创建时间,结果为秒数

#查看文件大小:
os.path.getsize(path) #返回文件的大小,若是目录则返回0

#查看文件:
os.path.exists(path) #判断path是否存在,存在返回True,不存在返回False
os.path.isfile(path) #判断path是否为文件,是返回True,不是返回False
os.path.isdir(path) #判断path是否目录,是返回True,不是返回False
os.path.islink(path) #islink() 检测是否是链接
os.path.isabs(path) #isabs() 检测一个路径是否是绝对路径
os.path.samefile(path1,path2) #samefile() 检测2个路径是否是同一个文件

#获取文件和目录:
os.walk(path) #递归返回path下的目录(包括path目录)、子目录、文件名的三元组

#获得shell命令返回值:
fp=os.popen(cmd) #打开命令cmd或从命令cmd打开管道,返回值是连接到管道的文件对象
rlt=fp.read()或 rlt=fp.readlines() #读取结果
os.system('dir') #获取系统命令的返回结果,但无法保存到一个变量里

#rename() 文件或文件夹重命名
os.rename('/home/sy/a','/home/sy/alibaba'
os.rename('02.txt','002.txt')

#stat() 获取文件或者文件夹的信息
result = os.stat('/home/sy/PycharmProject/Python3/10.27/01.py)

#getenv() 获取系统的环境变量
result = os.getenv('PATH')
print(result.split(':'))

#putenv() 将一个目录添加到环境变量中(临时增加仅对当前脚本有效)
os.putenv('PATH','/home/sy/下载')
os.system('syls')

#常用变量
>>> os.curdir #curdir 表示当前文件夹 .表示当前文件夹 一般情况下可以省略
'.'
>>> os.pardir #pardir 表示上一层文件夹 ..表示上一层文件夹 不可省略!
'..'
>>> os.name #name 获取代表操作系统的名称字符串
'nt'
>>> os.sep #sep 获取系统路径间隔符号 window ->\ linux ->/
'\\'
>>> os.extsep #extsep 获取文件名称和后缀之间的间隔符号 window & linux -> .
'.'
>>> repr(os.linesep) #linesep 获取操作系统的换行符号 window -> \r\n linux/unix -> \n
"'\\r\\n'"

>>> path = '/home/sy/000.py'
#splitext() 将一个路径切割成文件后缀和其他两个部分,主要用于获取文件的后缀
>>> result = os.path.splitext(path)
>>> print(result)
('/home/sy/000', '.py')

sys模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#sys.argv: 
实现从程序外部向程序传递参数。
可以用sys.argv获取当前正在执行的命令行参数的参数列表(list)
sys.argv[0] 当前程序名
sys.argv[1] 第一个参数
sys.argv[0] 第二个参数

#sys.exit([arg]):
程序中间的退出,arg=0为正常退出。
调用sys.exit(n)可以中途退出程序,当参数非0时,会引发一个SystemExit异常,从而可以在主程序中捕获该异常。
sys.getdefaultencoding(): 获取系统当前编码,一般默认为ascii。

#sys.setdefaultencoding():
设置系统默认编码,执行dir(sys)时不会看到这个方法,在解释器中执行不通过,可以先执行reload(sys),在执行 setdefaultencoding('utf8'),此时将系统默认编码设置为utf8。(见设置系统默认编码 )

#sys.getfilesystemencoding():
获取文件系统使用编码方式,Windows下返回'mbcs',mac下返回'utf-8'.

#sys.path:
获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到。

#sys.platform:
获取当前系统平台。如win32表示是Windows 32bit操作系统,linux2表示是linux平台;

#sys.stdin,sys.stdout,sys.stderr:
stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们
>>> sys.stdin.readline() #从标准输入读一行
sfdsafkjl
'sfdsafkjl\n'
>>> sys.stdout.write("AAA")
AAA3
>>> sys.stdout.write("BBBBBb")
BBBBBb6

#sys.modules
功能:sys.modules是一个全局字典,该字典是python启动后就加载在内存中。每当程序员导入新的模块,sys.modules将自动记录该模块。当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。它拥有字典所拥有的一切方法。
>>> sys.modules.keys() #返回所有已经导入模块列表
dict_keys(['builtins', 'sys', '_frozen_importlib', '_imp', '_warnings', '_thread', '_weakref', '_frozen_importlib_external', '_io', 'marshal', 'nt', 'winreg', 'zipimport', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_weakrefset', 'site', 'os', 'errno', 'stat', '_stat', 'ntpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', 'sysconfig', '_bootlocale', '_locale', 'encodings.gbk', '_codecs_cn', '_multibytecodec', 'atexit', 'pydoc', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'types', 'functools', '_functools', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'weakref', 'collections.abc', 'warnings', 'importlib.machinery', 'importlib.util', 'importlib.abc', 'contextlib', 'inspect', 'ast', '_ast', 'dis', 'opcode', '_opcode', 'enum', 'linecache', 'tokenize', 're', 'sre_compile', '_sre', 'sre_parse', 'sre_constants', 'copyreg', 'token', 'pkgutil', 'platform', 'subprocess', 'time', 'signal', 'threading', 'traceback', 'msvcrt', '_winapi', 'urllib', 'urllib.parse', 'tempfile', 'shutil', 'fnmatch', 'posixpath', 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'random', 'math', 'hashlib', '_hashlib', '_blake2', '_sha3', 'bisect', '_bisect', '_random'])
>>> print(sys.modules["os"])
<module 'os' from 'D:\\Program Files (x86)\\Python36-35\\lib\\os.py'>
#还可以通过key值获取模块所处路径

>>> sys.hexversion #获取python解释器的版本值,16进制格式
50726384
>>> sys.version #获取python解释器的版本信息
'3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 16:07:46) [MSC v.1900 32 bit (Intel)]'
>>> sys.copyright #返回python版权相关信息
'Copyright (c) 2001-2018 Python Software Foundation.\nAll Rights Reserved.\n\nCopyright (c) 2000 BeOpen.com.\nAll Rights Reserved.\n\nCopyright (c) 1995-2001 Corporation for National Research Initiatives.\nAll Rights Reserved.\n\nCopyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.\nAll Rights Reserved.'
>>> sys.api_version #解释器的C的API版本
1013
>>> sys.version_info #python版本信息,final表示最终版本,candidate表示候选,还有后续发行版本
sys.version_info(major=3, minor=6, micro=5, releaselevel='final', serial=0)
>>> sys.executable #返回python解释器的路径
'D:\\Program Files (x86)\\Python36-35\\python.exe'
>>> sys.getwindowsversion() #获取windows的版本信息
sys.getwindowsversion(major=10, minor=0, build=17134, platform=2, service_pack='')
>>>
坚持原创技术分享,您的支持将鼓励我继续创作!