python_基础_字符集列表推导式模块

Posted xhybk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python_基础_字符集列表推导式模块相关的知识,希望对你有一定的参考价值。

 

Python基础

1 字符集

  • 字符集编码发展历程简介:2进制(0/1)→ASCII表(数字/英文/符号)→gb2312(简体中文) →gbk(汉字) →Unicode(万国码,存储空间加倍) →UTF-8
  • 跨国官方语言兼容:本国语言字符集→转换成Unicode→转换成外国语言字符集
  • python2的默认字符是ascii,python3的默认字符是utf-8
  • python2不支持中文,报错:no-ascii,解决方案:在py文件头部加上# -*- coding:utf-8 -*-

2 列表推导式(列表生成式)

  • 列表推导式:又叫列表生成式。
    res1=[str(i).zfill(2) for i in res1]

循环替换,不使用列表推导式练习

1 1 # 循环替换,不使用列表推导式
2 2 # 随机生成如下list:[‘03‘, ‘06‘, ‘31‘, ‘19‘, ‘05‘, ‘20‘]
3 3 import random
4 4 res = random.sample(range(1,34),6)  #生成列表
5 5 for i in range(len(res)):   #根据列表长度n,循环n次
6 6     tmp = res[i]    #将每次循环拿到的值,保存为tmp
7 7     res[i] = str(tmp).zfill(2)  #将tmp先转为字符串,再使用方法 zfill左补0,共2位,并赋值给当前循环下标对应的值
8 8 print(2=====,res) #打印格式化后的列表
技术分享图片
1 2===== [03, 06, 31, 19, 05, 20]
View 循环替换练习 Result

列表推导式(列表生成式)练习

 1 # 列表推导式(列表生成式)
 2 # 把i作为每次循环res1取到的值,然后对i进行左补0处理,将每次处理的结果保存在新的列表中,再赋值给res1列表
 3 res1 = random.sample(range(1,34),6)
 4 res1 = [str(i).zfill(2) for i in res1]
 5 print(4=====,res1)
 6 
 7 # 每个数再加10
 8 res3 = [3,6,31,19,5,20]
 9 res3 = [ i+10 for i in res3]
10 print(5=====,res3)
11 
12 # 0~1000中的偶数(步长为2)
13 ou = [ i for i in range(0,1001,2)]
14 print(6=====,ou)
技术分享图片
1 4===== [09, 02, 20, 33, 26, 05]
2 5===== [13, 16, 41, 29, 15, 30]
3 6===== [0, 2,...1000]
View 列表推导式 Result

3 模块

  • 模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称。

3.1 标准模块

  • 标准模块:python自带的模块,免安装。即可以直接import的模块,如json/random/datetime/time/os等

3.1.1 os模块

 1 #!/usr/bin/python
 2 # -*- coding:utf-8 -*-
 3 # Author:hwm
 4 
 5 import os
 6 #*****取当前路径*****
 7 print(1=====,os.getcwd()) #取当前路径  (路径:win \\  mac /)
 8 
 9 #*****创建文件夹*****
10 os.mkdir(spz)    #创建文件夹,默认在当前文件夹创建
11 os.mkdir(d:\\spz)    #创建文件夹,可以加上绝对路径,父级目录不存在时,则报错
12 os.makedirs(one\\spz2) #创建文件夹,父级目录不存在时,则一起创建父级目录
13 
14 #*****获取指定文件夹下的文件或文件夹(返回一个list)*****
15 print(2=====,os.listdir(.)) # 获取当前目录下的文件或文件夹。返回一个list
16 print(3=====,os.listdir(d:\\)) # 获取d盘根目录下的文件或文件夹。
17 print(4=====,os.listdir(rtest\\)) # 获取对应目录下的文件或文件夹。加r是避免如	等 以为特殊字符,r用来转义
18 
19 #*****删除空文件夹*****
20 for i in range(10):
21     os.makedirs(test\\test%s%i)
22 os.rmdir(test)  #删除空文件夹,文件夹非空会报错
23 
24 print(os.remove("delete.txt"))  # 删除文件。文件不存在报错。
25 print(os.rmdir("delete1"))  # 删除指定的空文件夹。删除非空则报错。
26 print(os.removedirs("del\\del1"))  # 递归删除空目录(通过在目录上由深及浅逐层调用rmdir()函数)。遇到删除非空文件夹则报错。
27 # 参考https://blog.csdn.net/t704379675/article/details/55026009
28 
29 #*****拼接路径*****
30 print(5=====,os.path.join(nhy123,test0,a.txt) )#自动拼路径
31 #*****获取当前系统的路径分割符*****
32 print(6=====,os.sep) #当前系统的路径分割符 win
33 #*****获取父目录路径*****
34 print(7=====,os.path.dirname(rD:\\PycharmProjectsase\\Python3_class\\Day5	est\\test0\\a.txt))  #获取父目录路径
35 #*****获取文件大小*****
36 print(8=====,os.path.getsize(rtest\\test0\\a.txt)) #获取文件大小
37 #*****判断文件或目录是否存在*****
38 print(9=====,os.path.exists(rtest\\test0\\a.txt)) #判断文件或目录是否存在。存在,则返回True;不存在,则返回False
39 #*****判断是否是文件夹*****
40 print(10=====,os.path.isdir(rtest\\test0\\q.txt)) #判断是否是文件夹。是文件夹,则返回True;不是文件夹,则返回False。如果不存在,则返回False
41 #*****判断是否是文件*****
42 print(11=====,os.path.isfile(rtest\\test0\\q.txt)) #判断是否是文件。是文件,则返回True;不是文件,则返回False。如果不存在,则返回False
43 #*****分割文件夹路径和文件名称(返回元组)*****
44 print(12=====,os.path.split(rtest	est0a.txt)) #分割文件名和路径
45 #*****循环获取指定路径及其子目录下的文件夹路径、所有文件夹、所有文件*****
46 for cur_dir,dirs,files in os.walk(r3\\):  #自动循环。cur_dir当前目录,dirs对应目录下所有目录,files对应目录下所有文件
47     print(13=====,cur_dir=====,cur_dir,dirs=====,dirs,f=====,files)
48 
49 os.rename("spz1","spz")#重命名,左旧右新
50 print(14=====,os.stat("6 OS模块.py"))  # 获取文件信息
51 print(15=====,os.environ)  # 当前系统的环境变量
52 print(16=====,os.name)  # 当前系统名称
53 print(17=====,os.linesep)  # 当前操作系统的换行符
54 print(18=====,os.pathsep)  # 当前系统的环境变量中每个路径的分隔符,linux是:,windows是;
技术分享图片
1 1===== E:PycharmProjectsPython3_classDay5
 2 2===== [1 string, 1 string format.py, 1.py, 2 decode.py, 3, 3 function 补充.py, 4 递归 列表生成式.py, 5 内置函数.py, 6 format转时间戳.py, 6 module.py, 6 OS模块.py, 6 time模块.py, 6 时间戳转format.py, 6 检查模块是否安装成功.py, 6 自动修改日志名称.py, 6 自动创建文件.py, del, delete1, goods, homework, logs, logs.zip, my_fun, one, spz1, test, test.py, testia.txt, testtest0a.txt, testtest2a.txt, testtest4a.txt, testtest6a.txt, testtest8a.txt, video, 修改pip源为国内网站.py]
 3 3===== [$RECYCLE.BIN, 12306Bypass, 1results, 1scenarios, 1scripts, 1testclient, apache-tomcat-7.0.82-windows-x64, baidu, BaiduNetdiskDownload, BugReport.txt, chrome 下载, CloudMusic, eclipse-workspace, hwm, ksdler, LS, Microsoft Visual C++ 2008 Redistributable Package, Miniconda3, Net, Program Files, Program Files (x86), Python2713, Python362, RcsFetionLog, report, Roaming, SoapUI-Tutorials, spz, tomcat 7.0.47, tomcat7-java_shop, Users, Virtual Machines, Windows Virtual PC, 屏保, 杂七杂八, 迅雷下载, 颖淮1.9]
 4 4===== [1 string, test0, test1, test2, test3, test4, test5, test6, test7, test8, test9]
 5 5===== nhy123	est0a.txt
 6 6=====  7 7===== D:\\PycharmProjectsase\\Python3_class\\Day5	est\\test0
 8 8===== 3
 9 9===== True
10 10===== False
11 11===== False
12 12===== (test\\test0, a.txt)
13 13===== cur_dir===== 3\\ dirs===== [a, b] f===== []
14 13===== cur_dir===== 3\\a dirs===== [adir] f===== [a1, a2]
15 13===== cur_dir===== 3\\aadir dirs===== [] f===== [adir1]
16 13===== cur_dir===== 3\\b dirs===== [] f===== [b1, b2]
17 14===== os.stat_result(st_mode=33206, st_ino=1970324837026258, st_dev=139065, st_nlink=1, st_uid=0, st_gid=0, st_size=3418, st_atime=1530517252, st_mtime=1530517252, st_ctime=1530494537)
18 15===== environ({FTP_PASSIVE: 1, ANALYSIS_PATH: D:\\Program Files (x86)\\HP\\LoadRunner\\, JRE_HOME: C:\\Program Files\\Java\\jdk1.8.0_101\\jre, PROCESSOR_LEVEL: 6, SYSTEMROOT: C:\\Windows, USERPROFILE: C:\\Users\\ucs_huangwenmin, LOCALAPPDATA: C:\\Users\\ucs_huangwenmin\\AppData\\Local, PYTHONPATH: E:\\PycharmProjects\\Python3_class, LG_PATH: D:\\Program Files (x86)\\HP\\LoadRunner\\, COMMONPROGRAMW6432: C:\\Program Files\\Common Files, CATALINA_HOME: C:\\Program Files\\tomcat\\apache-tomcat-7.0.82, VBOX_MSI_INSTALL_PATH: D:\\Program Files\\Oracle\\VirtualBox\\, CLASSPATH: .;D:\\Program Files\\bsh-2.0b4.jar;D:\\Program Files\\apache-ant-1.9.6\\lib;C:\\Program Files\\tomcat\\apache-tomcat-7.0.82\\lib\\servlet-api.jar;C:\\Program Files\\Java\\jdk1.8.0_101\\lib\\dt.jar;C:\\Program Files\\Java\\jdk1.8.0_101\\lib\\tools.jar;D:\\Program Files\\apache-jmeter-3.3/lib/ext/ApacheJMeter_core.jar;D:\\Program Files\\apache-jmeter-3.3/lib/jorphan.jar;D:\\Program Files\\apache-jmeter-3.3/lib/logkit-2.0.jar, HOMEPATH: \\Users\\ucs_huangwenmin, APPDATA: C:\\Users\\ucs_huangwenmin\\AppData\\Roaming, PUBLIC: C:\\Users\\Public, LOG_FILE: C:\\Users\\UCS_HU~1\\AppData\\Local\\Temp\\ihp_custom_batches.log, SESSIONNAME: Console, COMSPEC: C:\\Windows\\system32\\cmd.exe, SYSTEMDRIVE: C:, USERDNSDOMAIN: WANGJIN.LOCAL, TERM: dumb, PROCESSOR_REVISION: 3c03, PROGRAMFILES: C:\\Program Files, UNXUTILS_HOME: D:\\Program Files\\UnxUtils, LR_ROOT: D:\\Program Files (x86)\\HP\\LoadRunner\\, ASL.LOG: Destination=file, PROGRAMDATA: C:\\ProgramData, COMMONPROGRAMFILES(X86): C:\\Program Files (x86)\\Common Files, WINDOWS_TRACING_LOGFILE: C:\\BVTBin\\Tests\\installpackage\\csilogfile.log, PATHEXT: .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC, PROCESSOR_IDENTIFIER: Intel64 Family 6 Model 60 Stepping 3, GenuineIntel, PSMODULEPATH: C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\;C:\\Program Files (x86)\\Microsoft SQL Server\\120\\Tools\\PowerShell\\Modules\\, TMP: C:\\Users\\UCS_HU~1\\AppData\\Local\\Temp, PYTHONUNBUFFERED: 1, JMETER_HOME: D:\\Program Files\\apache-jmeter-3.3, TOMCAT_HOME: C:\\Program Files\\tomcat\\apache-tomcat-7.0.82, LR_PATH: D:\\Program Files (x86)\\HP\\LoadRunner\\, VUGEN_PATH: D:\\Program Files (x86)\\HP\\LoadRunner\\, USERDOMAIN: WANGJIN, PROGRAMFILES(X86): C:\\Program Files (x86), COMPUTERNAME: HUANGWENMIN1, COMMONPROGRAMFILES: C:\\Program Files\\Common Files, CURR_DIR: D:\\Program Files (x86)\\HP\\LoadRunner\\dat\\Setup\\LoadRunner\\MSBuild\\..\\..\\..\\.., PYTHONIOENCODING: UTF-8, WINDIR: C:\\Windows, FP_NO_HOST_CHECK: NO, PROGRAMW6432: C:\\Program Files, JAVA_HOME: C:\\Program Files\\Java\\jdk1.8.0_101, WINDOWS_TRACING_FLAGS: 3, OS: Windows_NT, ALLUSERSPROFILE: C:\\ProgramData, PATH: D:\\Miniconda3\\Library\\bin;D:\\Miniconda3;D:\\Program Files\\UnxUtils\\usr\\local\\wbin\\;\\D:\\Program Files\\apache-ant-1.9.6\\bin;C:\\Program Files\\tomcat\\apache-tomcat-7.0.82\\bin;C:\\Program Files\\Java\\jdk1.8.0_101\\bin;C:\\Program Files\\Java\\jdk1.8.0_101\\jre\\bin;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;d:\\Program Files (x86)\\Windows7Master;D:\\Program Files\\TortoiseSVN\\bin;C:\\Program Files\\Microsoft SQL Server\\120\\DTS\\Binn\\;C:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\110\\Tools\\Binn\\;C:\\Program Files (x86)\\Microsoft SQL Server\\120\\Tools\\Binn\\;C:\\Program Files\\Microsoft SQL Server\\120\\Tools\\Binn\\;C:\\Program Files (x86)\\Microsoft SQL Server\\120\\Tools\\Binn\\ManagementStudio\\;C:\\Program Files (x86)\\Microsoft SQL Server\\120\\DTS\\Binn\\;C:\\Program Files\\Java\\jdk1.8.0_101\\bin;D:\\Python2713;D:\\Python2713\\Scripts;D:\\Python362;D:\\Python362\\Scripts;   ;C:\\strawberry\\c\\bin;C:\\strawberry\\perl\\bin;D:\\Program Files (x86)\\IDM Computer Solutions\\UltraEdit;D:\\Program Files\\TortoiseGit\\bin;d:\\Miniconda3;d:\\Miniconda3\\Scripts;d:\\Miniconda3\\Library\\bin;D:\\Python362\\Scripts\\;D:\\Python362\\;D:\\Python2713\\Scripts;D:\\Python2713;C:\\Users\\ucs_huangwenmin\\AppData\\Local\\Programs\\Fiddler, HOMEDRIVE: C:, LOGGER_CONFIG_PATH: D:\\Program Files (x86)\\HP\\LoadRunner\\dat\\ltlogconf.xml, NUMBER_OF_PROCESSORS: 8, ANT_HOME: D:\\Program Files\\apache-ant-1.9.6, PROCESSOR_ARCHITECTURE: AMD64, PYCHARM_HOSTED: 1, TEMP: C:\\Users\\UCS_HU~1\\AppData\\Local\\Temp, TARGETDIR: D:\\Program Files (x86)\\HP\\LoadRunner\\dat\\Setup\\LoadRunner\\MSBuild\\..\\..\\..\\.., LOGONSERVER: \\\\AD2016, USERNAME: ucs_huangwenmin})
19 16===== nt
20 17===== 
21 
22 18===== ;
View OS模块 Result
过滤文件夹并创建文件练习
 1 #!/usr/bin/python
 2 # -*- coding:utf-8 -*-
 3 # Author:hwm
 4 
 5 # 把文件名末尾是偶数的文件夹中,创建一个txt文件,里面随便写点东西
 6 import os
 7 dir = os.listdir(rtest)
 8 for i in dir:
 9     if i[-1].isdigit():
10         if not int(i[-1]) % 2:
11             #path =r‘test\\%s\\b.txt‘%i
12             path = os.path.join(test, i, c.txt)
13             with open(path,w,encoding=utf-8) as fw:
14                 fw.write(abc)
遍历查找文件并重命名练习 
 1 #!/usr/bin/python
 2 # -*- coding:utf-8 -*-
 3 # Author:hwm
 4 # logs目录下,循环遍历文件,将文件名重命名为xxx.bak(注意要进到相应的路径下再重命名)
 5 import os
 6 for cur_dir,dirs,files in os.walk(rlogs\\):
 7     print(cur_dir=====,cur_dir,dirs=====,dirs,files=====,files)
 8     for file in files:
 9         old_path=os.path.join(cur_dir,file)
10         new_path = os.path.join(cur_dir, file+.bak)
11         os.rename(old_path,new_path)

3.1.2 time模块

1 #!/usr/bin/python
 2 # -*- coding:utf-8 -*-
 3 # Author:hwm
 4 
 5 import time,datetime
 6 # 时间戳 从unix元年开始到现在过的秒数
 7 
 8 print(1=====,time.time())# 获取当前时间戳。可使用在线转换工具查看
 9 print(2=====,int(time.time()))# 获取当前时间戳。可使用在线转换工具查看
10 
11 # 格式化时间
12 print(3=====,time.strftime(%Y-%m-%d %H:%M:%S)) #格式化时间
13 s=3*24*60*60
14 print(4=====,time.time()-s) #三天前的时间戳
15 
16 # 时间元组 (时间戳与格式化时间的中介)
17 # 把时间戳转成时间元组
18 print(5=====,time.gmtime()) # 把时间戳转成时间元组,如果不传时间戳,那么取的是标准时区的时间
19 print(6=====,time.localtime()) # 把时间戳转成时间元组,如果不传时间戳,那么取的是当前时区的时间
20 print(7=====,time.localtime(time.time()-s)) #三天前的时间元组
21 time_tuple =time.localtime()
22 # 把格式化时间转成时间元组
23 print(8=====,time.strptime(2018/07/01,%Y/%m/%d)) # 把格式化好的时间转成时间元组
24 # 时间元组转成格式化时间
25 print(9=====,time.strftime(%Y-%m-%d %H:%M:%S,time.localtime(time.time()-s))) #三天前的时间元组转化为格式化好的时间
26 # 时间元组转成时间戳
27 print(10=====,time.mktime(time_tuple)) # 把时间元组转成时间戳
技术分享图片
 1 1===== 1530521852.7921028
 2 2===== 1530521852
 3 3===== 2018-07-02 16:57:32
 4 4===== 1530262652.7921028
 5 5===== time.struct_time(tm_year=2018, tm_mon=7, tm_mday=2, tm_hour=8, tm_min=57, tm_sec=32, tm_wday=0, tm_yday=183, tm_isdst=0)
 6 6===== time.struct_time(tm_year=2018, tm_mon=7, tm_mday=2, tm_hour=16, tm_min=57, tm_sec=32, tm_wday=0, tm_yday=183, tm_isdst=0)
 7 7===== time.struct_time(tm_year=2018, tm_mon=6, tm_mday=29, tm_hour=16, tm_min=57, tm_sec=32, tm_wday=4, tm_yday=180, tm_isdst=0)
 8 8===== time.struct_time(tm_year=2018, tm_mon=7, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=182, tm_isdst=-1)
 9 9===== 2018-06-29 16:57:32
10 10===== 1530521852.0
View time模块 Result
技术分享图片
1 #!/usr/bin/python
 2 # -*- coding:utf-8 -*-
 3 # Author:hwm
 4 
 5 # 时间戳转格式化好的时间
 6 # 1、把时间戳转成时间元组 2、把时间元组转成格式化好的时间
 7 import time
 8 def TimestampToStr(timestamp=None,format=%Y-%m-%d %H:%M:%S):
 9     if timestamp:
10         time_tuple = time.localtime(timestamp)  #把时间戳转成时间元组
11         return time.strftime(format,time_tuple) #把时间元组转成格式化好的时间
12     else:
13         return time.strftime(format)
14 
15 print(1=====,TimestampToStr(1530177758.6843846))
16 print(2=====,TimestampToStr())
17 print(3=====,TimestampToStr(1530177758.6843846,%Y/%m/%d))
View 时间戳转成时间元组 Code
技术分享图片
1 1===== 2018-06-28 17:22:38
2 2===== 2018-07-02 16:58:39
3 3===== 2018/06/28
View 时间戳转成时间元组 Result
技术分享图片
 1 #!/usr/bin/python
 2 # -*- coding:utf-8 -*-
 3 # Author:hwm
 4 
 5 # 格式化好的时间转时间戳
 6 # 1、把格式化好的时间转成时间元组 2、把时间元组转成时间戳
 7 import time
 8 def StrToTimestamp(format_time=None,format=%Y-%m-%d %H:%M:%S):
 9     if format_time:
10         time_tuple = time.strptime(format_time,format)  # 把格式化好的时间转成时间元组
11         return int(time.mktime(time_tuple)) #把时间元组转成时间戳
12     else:
13         return int(time.time())
14 
15 print(1=====,StrToTimestamp(2018-07-01 17:31:28))
16 print(2=====,StrToTimestamp())
17 print(3=====,StrToTimestamp(2018/07/01,%Y/%m/%d))
View 格式化时间转成时间戳 Code
技术分享图片
1 1===== 1530437488
2 2===== 1530522030
3 3===== 1530374400
View 格式化时间转成时间戳 Result

3.2 开源模块

  • 开源模块/第三方模块:他人写好的模块,安装完后能用的。
  • 第三方模块安装方式:
    • 1)命令行自动安装 pip install pymysql
      • ‘pip命令不存在‘解决方法:python安装目录下/Scripts/pip.exe加到环境变量后,就可以在命令行用pip去下载模块.
        • 在环境变量的PATH里新建D:Miniconda3Scripts
      • ‘pip Fatal error in launcher: Unable to create process using ‘‘‘‘解决方法:同上加环境变量

      • ‘Unknow or unsupported command ‘install‘‘解决方法:where pip,如果出现多行,且 /Scripts/pip.exe不在第一行,则在其他路径下将文件名改成非pip就可以了。
      • ‘超时‘解决方法:运行《修改pip源为国内网站.py》
      • 指定版本安装:python2 -m pip install pymysql、python3 -m pip install pymysql

  • 技术分享图片
    1 import os,sys,platform
     2 ini="""[global]
     3 index-url = https://pypi.doubanio.com/simple/
     4 [install]
     5 trusted-host=pypi.doubanio.com
     6 """
     7 os_version=platform.platform()
     8 if Windows in os_version:
     9     os_flag=False
    10     file_name=pip.ini
    11 else:
    12     os_flag=True
    13     file_name=pip.conf
    14 if os_flag==True:
    15     pippath=os.environ["HOME"]+os.sep+".pip"+os.sep
    16 else:
    17     pippath=os.environ["USERPROFILE"]+os.sep+"pip"+os.sep
    18 if not os.path.exists(pippath):
    19     os.mkdir(pippath)
    20 with open(pippath+file_name,"w") as f:
    21     f.write(ini)
    View 修改pip源为国内网站 Code
      • 2)手动安装
        • 下载pip源地址:https://pypi.org/project/pinyin/
        • .whl安装
          • 1、进入文件对应的目录,pip install redis-2.10.6-py2.py3-none-any.whl
          • 2、或者任意目录下,pip install 绝对路径 edis-2.10.6-py2.py3-none-any.whl
        • .tar.gz安装
          • 1、解压
          • 2、进入setup.py目录下,shift+右键,在此处打开命令行窗口。或者直接在地址栏输入cmd
          • 3、python setup.py install执行
      • 3) pycharm
        • pycharm->settings->project->Project Interpreter ,点加号,搜索下载安装
    • 检查模块是否安装成功:在pip.exe目录路径下,打开命令行输入pip list技术分享图片

 

3.3 自定义模块

  • 自己写的python模块

以上是关于python_基础_字符集列表推导式模块的主要内容,如果未能解决你的问题,请参考以下文章

Python__列表推导式

python之生成器和列表推导式

python 迭代器 生成器 列表推导式

python 列表推导式

python 第23课 创建列表的4种方式_推导式建立列表

python 第23课 创建列表的4种方式_推导式建立列表