Python 之解析,,Python 之列


Python 之列表/字典/集合解析

通过对列表/字典/集合每一个元素应用一个函数的方法将一个列表映射到另一个列表/字典/集合准备知识    os (operating system) 模块        os.getcwd()  获取当前工作目录            >>> import os            >>> print(os.getcwd())            c:\Users\sreamy        os.chdir()  切换工作目录(使用正斜杠)            >>> import os            >>> print(os.getcwd())            c:\Users\sreamy            >>> os.chdir(‘D:/‘)            >>> print(os.getcwd())            D:        os.stat() 获取文件元信息(文件创建时间,最后修改时间,文件大小等)            >>> import os            >>> print(os.getcwd())            C:\Users\sreamy\.PyCharm2018.2\config            >>> import glob            >>> glob.glob(‘pycharm.*‘)            [‘pycharm.key‘]            >>> metadata = os.stat(‘pycharm.key‘)   --> 获取文件元信息            >>> metadata.st_mtime    -->   文件最后修改时间            1554117802.3633113            >>> import time            >>> time.localtime(metadata.st_mtime)            time.struct_time(tm_year=2019, tm_mon=4, tm_mday=1, tm_hour=19, tm_min=23, tm_sec=22, tm_wday=0, tm_yday=91, tm_isdst=0)            >>> metadata.st_size     -->   文件大小(字节)            6000        os.path() 处理文件名和目录        os.path.join() 从一个或多个路径中构造一个路径名            >>> import os.path            >>> os.path.join(‘c:/users/sreamy/.PyCharm2018.2/config/‘,‘pycharm.key‘)            ‘c:/users/sreamy/.PyCharm2018.2/config/pycharm.key‘   --> 路径名带/            >>> print(os.path.join(‘c:/users/sreamy/.PyCharm2018.2/config/‘,‘pycharm.key‘))            c:/users/sreamy/.PyCharm2018.2/config/pycharm.key            >>> os.path.join(‘c:/users/sreamy/.PyCharm2018.2/config/‘,‘pycharm.key‘)            ‘c:/users/sreamy/.PyCharm2018.2/config/pycharm.key‘            >>> print(os.path.join(‘c:/users/sreamy/.PyCharm2018.2/config‘,‘pycharm.key‘))            c:/users/sreamy/.PyCharm2018.2/config\pycharm.key    --> 路径名不带/            >>> os.path.join(‘c:/users/sreamy/.PyCharm2018.2/config‘,‘pycharm.key‘)            ‘c:/users/sreamy/.PyCharm2018.2/config\\pycharm.key‘            >>> import os.path            >>> print(os.path.expanduser(‘~‘))            C:\Users\sreamy           --> os.path.expanduser(‘~‘)  家目录路径            >>> print(os.path.join(os.path.expanduser(‘~‘),‘.PyCharm2018.2‘,‘config‘,‘pycharm.key‘))            C:\Users\sreamy\.PyCharm2018.2\config\pycharm.key        os.path.split()  拆分并返回目录名和文件名        os.path.splitext()  拆分文件名并返回短文件名和扩展名            >>> import os.path            >>> pathname = ‘C:/Users/sreamy/.PyCharm2018.2/config/pycharm.key‘            >>> (dirname,filename) = os.path.split(pathname)            >>> dirname            ‘C:/Users/sreamy/.PyCharm2018.2/config‘            >>> filename            ‘pycharm.key‘            >>> (shortname,extension) = os.path.splitext(filename)            >>> shortname            ‘pycharm‘            >>> extension            ‘.key‘        os.path.realpath() 构建文件按绝对路径            >>> import os            >>> print(os.getcwd())            C:\Users\sreamy\.PyCharm2018.2\config            >>> os.path.realpath(‘pycharm.key‘)            ‘C:\\Users\\sreamy\\.PyCharm2018.2\\config\\pycharm.key‘            >>> print(os.path.realpath(‘pycharm.key‘))            C:\Users\sreamy\.PyCharm2018.2\config\pycharm.key    glob  罗列目录内容|(使用通配符的方式)            >>> import os            >>> os.chdir(‘C:/Users/sreamy/.PyCharm2018.2‘)            >>> import glob            >>> glob.glob(‘config/*.pwd‘)            [‘config\\pdb.pwd‘]            >>> os.chdir(‘C:/Users/sreamy/.PyCharm2018.2/config‘)            >>> glob.glob(‘*port*.*‘)            [‘port.lock‘]列表解析    通过对列表每一个元素应用一个函数的方法将一个列表映射到另一个列表    提供一个紧凑的方式,可使用任何的Python 表达式            >>> a_list = [1,2,4,8]            >>> [elem ** 2 for elem in a_list]            [1, 4, 16, 64]            >>> a_list            [1, 2, 4, 8]            >>> import os,glob            >>> os.getcwd()            ‘C:\\Users\\sreamy\\.PyCharm2018.2\\config‘            >>> os.chdir(‘C:/users/sreamy/.PyCharm2018.2/config/tasks‘)            >>> glob.glob(‘*.zip‘)            [‘fullstack.contexts.zip‘, ‘fullstack.tasks.zip‘, ‘untitled.contexts.zip‘, ‘untitled.tasks.zip‘]            >>> [os.path.realpath(f) for f in glob.glob(‘*.zip‘)]            [‘C:\\users\\sreamy\\.PyCharm2018.2\\config\\tasks\\fullstack.contexts.zip‘,            ‘C:\\users\\sreamy\\.PyCharm2018.2\\config\\tasks\\fullstack.tasks.zip‘,            ‘C:\\users\\sreamy\\.PyCharm2018.2\\config\\tasks\\untitled.contexts.zip‘,            ‘C:\\users\\sreamy\\.PyCharm2018.2\\config\\tasks\\untitled.tasks.zip‘]            >>> import os,glob            >>> os.getcwd()            ‘C:\\users\\sreamy\\.PyCharm2018.2\\config\\tasks‘                 ‘‘‘ tasks 目录下所有zip文件的大小和绝对路径 ‘‘‘            >>> [[os.stat(f).st_size,os.path.realpath(f)] for f in glob.glob(‘*.zip‘)]            [[139, ‘C:\\users\\sreamy\\.PyCharm2018.2\\config\\tasks\\fullstack.contexts.zip‘],             [139, ‘C:\\users\\sreamy\\.PyCharm2018.2\\config\\tasks\\fullstack.tasks.zip‘],             [35247, ‘C:\\users\\sreamy\\.PyCharm2018.2\\config\\tasks\\test.zip‘],             [139, ‘C:\\users\\sreamy\\.PyCharm2018.2\\config\\tasks\\untitled.contexts.zip‘],             [139, ‘C:\\users\\sreamy\\.PyCharm2018.2\\config\\tasks\\untitled.tasks.zip‘]]                 ‘‘‘ task 目录下所有ZIP 文件的大小和绝对路径且 文件大小需要小于1000 字节 ‘‘‘            >>> [[os.stat(f).st_size,os.path.realpath(f)] for f in glob.glob(‘*.zip‘) if os.stat(f).st_size < 1000]            [[139, ‘C:\\users\\sreamy\\.PyCharm2018.2\\config\\tasks\\fullstack.contexts.zip‘],             [139, ‘C:\\users\\sreamy\\.PyCharm2018.2\\config\\tasks\\fullstack.tasks.zip‘],             [139, ‘C:\\users\\sreamy\\.PyCharm2018.2\\config\\tasks\\untitled.contexts.zip‘],             [139, ‘C:\\users\\sreamy\\.PyCharm2018.2\\config\\tasks\\untitled.tasks.zip‘]]字典解析    和列表解析相似,返回的值是字典而已            >>> import os,glob            >>> os.getcwd()            ‘C:\\users\\sreamy\\.PyCharm2018.2\\config\\tasks‘            >>> metadata_dict = {f:os.stat(f) for f in glob.glob(‘*.zip‘)}            >>> type(metadata_dict)            <class ‘dict‘>            >>>            >>> metadata_dict.keys()            dict_keys([‘fullstack.contexts.zip‘,                       ‘fullstack.tasks.zip‘,                       ‘test.zip‘,                       ‘untitled.contexts.zip‘,                       ‘untitled.tasks.zip‘])            >>> metadata_dict[‘fullstack.tasks.zip‘].st_size            139    字典键 <--> 值交换        >>> a_list = {‘a‘:1,‘b‘:2,‘c‘:3}        >>> {value:key  for key,value in a_list.items()}        {1: ‘a‘, 2: ‘b‘, 3: ‘c‘}        >>> a_list        {‘a‘: 1, ‘b‘: 2, ‘c‘: 3}集合解析    和字典解析类似,字典是键值对,集合只有值        >>> a_set = set(range(5))        >>> a_set        {0, 1, 2, 3, 4}        >>> {x ** 2 for x in a_set}        {0, 1, 4, 9, 16}        >>> a_set        {0, 1, 2, 3, 4}        >>> {x for x in a_set if x % 2 == 1}        {1, 3}        >>> {x for x in range(8)}        {0, 1, 2, 3, 4, 5, 6, 7}

Python 之解析

评论关闭