[TOC]
1.Python3简单介绍 Python的3.0版本,常被称为Python 3000,或简称Py3k。
Python 语言的广泛性 :
Web应用的开发 服务器端编程,具有丰富的Web开发框架,如Django和TurboGears,快速完成一个网站的开发和Web服务。典型如国内的豆瓣、果壳网等;国外的Google、Dropbox等。
系统网络运维 在运维的工作中,有大量重复性工作的地方,并需要做管理系统、监控系统、发布系统等,将工作自动化起来,提高工作效率,这样的场景Python是一门非常合适的语言。
科学与数字计算 Python被广泛的运用于科学和数字计算中,例如生物信息学、物理、建筑、地理信息系统、图像可视化分析、生命科学等,常用numpy、SciPy、Biopython、SunPy等。
3D游戏开发 Python有很好的3D渲染库和游戏开发框架,有很多使用Python开发的游戏,如迪斯尼卡通城、黑暗之刃。常用PyGame、Pykyra等和一个PyWeek的比赛。
图形界面开发 Python可编写桌面图形用户界面,还可以扩展微软的Windows,常用Tk、GTK+、PyQt、win32等
网络编程 除了网络和互联网的支持,Python还提供了对底层网络的支持,有易于使用的Socket接口和一个异步的网络编程框架Twisted Python
2.Python3安装 在Linux中安装Python3命令,在官网下载 https://www.python.org/downloads/source/ 1 2 3 4 5 tar -zxvf Python-3.6.1.tgz cd Python-3.6.1 ./configure make && make install python3 -V
ipython 是一个 python 的交互式 shell( i 代表 交互(interaction)),比默认的 python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数。
1 2 3 4 5 6 7 8 9 10 11 12 13 Linux 环境还可以使用以下命令安装: pip install ipython sudo apt-get install ipython #Ubuntu yum install ipython #c entos 环境变量配置: setenv PATH "$PATH:/usr/local/bin/python" //csh shell export PATH="$PATH:/usr/local/bin/python" // bash shell (Linux) 输入 PATH="$PATH:/usr/local/bin/python" //在 sh 或者 ksh shell 输入: path=%path%;C:\Python //在 Windows 设置环境变量: Python 环境变量:
Python环境遍历
运行Python的三种模式
以下为Python命令行参数:
Python命令行参数
3.Python3与Python2.X对比 不同点0:采用print输出时候格式不同,Py2 采用 ‘’,而python3智能采用()函数形式
不同点1:`反引号在Python2.x可用使用,Python3被废弃;其中原因之一与单引号容易混淆
1 2 3 4 5 6 7 8 9 >>> a = 1024 >>> b = "weiyigeek" >>> print( b + a) >>> print b + a >>> print b + `a` Weiyigeek1024 >>> print( b + repr(a)) >>> print( b + str(a))
不同点2:ptthon2中的raw_input()与Python3的input函数功能相同 描述:raw_input函数在py3中已经删除,与input函数合并为一个;1 2 3 4 >>> name = raw_input("请输入您的姓名:" ) 请输入您的姓名:WeiyiGeek >>> print(name)WeiyiGeek
不同点3:ptthon2中的有cmp比较函数而Python3中是不存在的 1 2 3 4 5 6 7 >>> cmp(1,2) -1 >>> cmp("abc" ,"abb" ) 1 >>> cmp("abc" ,"abc" ) 0
不同点4:ptthon2与Python3中字符集不同 Python2种容易中文乱码,所有往往使用三种方法进行解决:1 2 3 4 5 6 7 8 9 10 unicode_str = unicode('中文' ,encoding="utf-8" ); print unicode_str.encode('utf-8' );import codecs codecs.open('filename' ,encoding='utf-8' );
补充:1 2 3 4 5 6 7 UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)' import sys reload(sys) sys.setdefaultencoding('gb18030' )
不同点5:python3.5和Python2.7在套接字返回值解码上有区别: str通过encode()方法可以编码为指定的bytes,反过来如果我们从网络或磁盘上读取了字节流是bytes,把bytes变为str就需要用decode()方法;1 2 3 4 5 6 7 8 9 10 11 >>> "我是一个网络安全从业者" .encode('utf-8' )b'\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\x80\xe4\xb8\xaa\xe7\xbd\x91\xe7\xbb\x9c\xe5\xae\x89\xe5\x85\xa8\xe4\xbb\x8e\xe4\xb8\x9a\xe8\x80\x85' >>> "我是一个网络安全从业者" .encode('gbk' )b'\xce\xd2\xca\xc7\xd2\xbb\xb8\xf6\xcd\xf8\xc2\xe7\xb0\xb2\xc8\xab\xb4\xd3\xd2\xb5\xd5\xdf' se.decode('gbk' ) '我是一个网络安全从业者' >>> b'\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\x80\xe4\xb8\xaa\xe7\xbd\x91\xe7\xbb\x9c\xe5\xae\x89\xe5\x85\xa8\xe4\xbb\x8e\xe4\xb8\x9a\xe8\x80\x85' .decode('utf-8' )'我是一个网络安全从业者'
不同点6:python3、2有区别pip安装软件的区别 1 2 3 py2:pip install mysql-python py3:pip install mysqlclient
4.Python3基础语法 4.1 Python中文编码 Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错所有代码中包含中文,就需要在头部指定编码。 案例1:Python第一个程序Hello Wrold:
1 2 3 4 5 6 7 print("Hello World, Python 3.x! 唯一" ) print("你好,世界" );
Python中文编码
注意事项: Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码,但在开发得时候需要设置 py 文件存储的格式为 UTF-8,否则会出现类似以下错误信息
4.2 Python基础语法学习 在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头,且标识符是区分大小写;1 2 单下划线:以单下划线_foo开头的不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 导入。 双下划线:双下划线开头的 __foo 代表类的私有成员,以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。
Python 变量定义: Python 中的变量不需要声明,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建; 由于Python是弱类型语言类型属于对象,变量是没有类型的,变量仅仅是一个对象的引用(一个指针),且一个变量可以通过赋值指向不同类型的对象 ,比如: 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值,Python允许你同时为多个变量赋值;当你指定一个值时,Number 对象就会被创建,可以使用 del语句 删除一些对象引用;1 2 3 4 a=[1,2,3] a="Runoob" #以上代码中,[1,2,3] 是 List 类型,"Runoob" 是 String 类型,而变量 a 是没有类型,她仅仅 #是一个对象的引用(一个指针),可以是指向 List 类型对象,也可以是指向 String 类型对象。
在 python 中,strings, tuples, 和 numbers 是 不可更改的对象 ,而 list,dict ,set则是 可以修改的对象 。
不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。
可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。
案例:Python变量赋值:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 int1 = 23 float1 = 100.0 string = "WeiyiGeek" print("姓名:" ,string,"年龄:" ,int1, "分数:" , float1,end="\n" ) a = b = c = 1 print(a,b,c,end="\n" ) a,b,c = 1 , 2 , "WeiyiGeek" print(a,b,c,end=" " ) del a,bprint(a,b,c,end=" " )
Python变量赋值
python 保留字符与函数帮助: 这些保留字不能用作常数或变数,或任何其他标识符名称;内置函数帮助及Python3的输出格式:1 2 3 4 5 6 7 >>> import keyword>>> keyword.kwlist['False' , 'None' , 'True' , 'and' , 'as' , 'assert' , 'async' , 'await' , 'break' , 'class' , 'continue' , 'def' , 'del' , 'elif' , 'else' , 'except' , 'finally' , 'for' , 'from' , 'global' , 'if' , 'import' , 'in' , 'is' , 'lambda' , 'nonlocal' , 'not' , 'or' , 'pass' , 'raise' , 'return' , 'try' , 'while' , 'with' , 'yield' ] >>>dir(__builtins__) >>>help(int) >>>print("string" )
Python 中注释: 采用 # ‘’’ “”” 来注释代码,注意除了第一个都是成对使用,在输出函数中也能进行注释输出;1 2 3 4 5 def a () : '''这是文档字符串''' pass print(a.__doc__)
Python 行和缩进: 在Python代码块不再像其他语言一样使用{}来控制类,函数以及其他逻辑判断,而是以缩进的方式; 因此,在 Python 的代码块中必须使用相同数目的行首缩进空格数;建议你在每个缩进层次使用 单个制表符 或 两个空格 或 四个空格 , 切记不能混用;注意事项: 缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。
Python 中空行含义: 函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。 空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错;但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构; 记住:空行也是程序代码的一部分。
Python 多行语句: 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠()来实现多行语句;但是在 [], {}, 或 () 中的多行语句直接使用’,’来分割,不需要使用反斜杠(); 在同一行中使用多条语句,语句之间使用分号(;)分割。
案例:验证多行语句于,输入语句在一行的分割1 2 3 4 5 6 7 8 9 10 one = 1 two = 2 three = 3 add = one +\ two +\ three print("add =" ,add);print(add);
Python 模块导入: 在 python 用 import 或者 from…import 来导入相应的模块。
将整个模块(somemodule)导入 |import modulename |
从某个模块中导入某个函数 | from modulename import function |
从某个模块中导入多个函数,格式为 | from modulename import function1,function1 |
将某个模块中的全部函数导入 | from somemodule import * |
4.3 Python基础数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组)Set(集合)Dictionary(字典)
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)
数据类型别名:
序列类型:列表/元祖/字符串
映射容器:字典(存放对象)
4.3.1 整型(intger)
Python整型数据变量
复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点型; e记法:15e10 => 15*10的10次方 = 150000000000.0;在交互模式中,最后被输出的表达式结果被赋值给变量 _ 。
案例:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 >>> price = 113.0625 >>> _ = 0 >>> price + _ 113.0625 >>> round(_, 2 )113.06 temp = input("请输入数字:" ) print("输入值为 : " ,temp, " | 类型:" ,type(temp)) temp = '5' number = int(temp) print("字符转换整数 : " ,number," | 类型:" ,type(number)) temp = True temp = 4 +3j print("复数:" ,temp," | 类型:" ,type(temp),end="\n\n" )
Python整型数据变量案例
注意事项: 1)Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。 2)Python3 中,把 True 和 False 定义成关键字了,它们的值还是 1 和 0,它们可以和数字相加。 3)Python3 中,使用十六进制和八进制来代表整数: number = 0xA0F # 十六进制 0o37 # 八进制 4)负数中j可以不分大小写的
4.3.2 字符串(string) python 中单引号和双引号使用完全相同且字符串 不能被改变 ,使用三引号(‘’’或”””)可以指定一个多行字符串进行跨行,WYSIWYG(所见即所得)格式;
Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用,如 str =’a’ ;字符串中可以包含换行符、制表符以及其他特殊字符。
python 字符串可以用 + 运算符连接在一起,用 * 运算符重复,按字面意义级联字符串,如”this “ “is “ “string”会被自动转换为this is string。
Python 通过索引截取字符串中字符,语法格式如下:变量[头下标:尾下标](有两种索引方式,从左往右以0开始,从右往左以-1开始) [:] 截取字符串中的一部分,遵循左闭右开原则,str[0,2] 是不包含第 3 个字符的。
Python字符串索引
Python转义字符: 反斜杠可以用来转义,使用r可以让反斜杠不发生转义, 如 r”this is a line with \n” 则\n会显示,并不是换行。
Python字符串格式化
Python字符串格式化: 基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中,与 C 中 sprintf 函数一样的语法。
Python字符串格式化
Python格式化操作符辅助指令
案例: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 word = '字符串' sentence = "这是一个句子." paragraph = """ 这是一个段落, 可以由多行组成 """ A = " THIS A" B = "String !" C = A + B print(C,end="\n" ) print("段落:" ,paragraph) str1 = '0123456789' print(str1[0 :-1 ]) print(str1[2 :5 ]) print(str1[-2 ]) print(str1 * 2 ) print('数值:' + str1) print('hello\nWeiyi' ) print(r'c:\\windows' ) var = "Hello" print("拼接字符串:\a" ,var[:5 ]+" World!" ) print (r'\n' )print (R'\n' )print("我叫 %s 今年 %d 岁 %#X 数值:%5.3f" % ('小明' ,10 ,255 ,12.85455 )) print("\u6211\u662f\u6700\u559c\u7231\u0050\u0079\u0074\u0068\u006f\u006e" ) "%o" % 10 "%X" % 10 "%x" % 10 "%5.2f" %27.658 "%5.2f" %27 "%f" %27 "%e" % 10000000 "%.2e" % 27.658 "%g" % 28.444455 "%g" % 28261465 "%5d" %5 "%-5d" %5 "%+d" % 5 "%+d" % -5 "%010d" % 5 "%-010d" % 5 print('%s' % "I love you" ) '{0:1f}{1}' .format(27.586 ,"Gb" ) '{0:.1f}{1}' .format(27.586 ,"Gb" ) "%c %c %c" % (97 ,98 ,99 ) '%d + %d = %d' % (4 ,5 ,4 +5 ) >>> "{:+.2f} {:+.2f}" .format(3.1415926 ,-1 ) '+3.14 -1.00' >>> "{:.0f}" .format(3.1415926 ,-1 ) '3' >>> "{:0>2d}" .format(3 ) '03' >>> "{:0<2d}" .format(3 ) '30' >>> "{:,}" .format(30000000 ) '30,000,000' >>> "{:.2%}" .format(0.2657 ) '26.57%' >>> "{:.2e}" .format(10000000000000 ) '1.00e+13' >>> "{:10d}" .format(100 ) ' 100' >>> "{:<10d}" .format(100 ) '100 ' >>> "{:^10d}" .format(100 ) ' 100
Python字符串案例
注意事项:
在Python2中,普通字符串是以8位ASCII码进行存储的,而在Python3中,所有的字符串都是16位Unicode字符串表示的,使用的语法是在字符串前面加上前缀 u;
与 C 字符串不同的是,Python 字符串不能被改变,向一个索引位置赋值,比如word[0] = ‘m’会导致错误。
4.3.3 列表(list) 序列于列表是Python中最基本的数据结构,是使用最频繁的数据类型,可以进行的操作包括索引(从0开始), 切片(slice组合[start:stop,step]), 加,乘,检查成员;列表中元素的类型可以不相同(关键是还可以是列表);可以对Python列表的数据项进行修改或更新;
格式:列表是写在方括号 [] 之间、用逗号分隔开的元素列表,如 变量[头下标:尾下标],和字符串一样列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
Python列表
重点:列表推导(解析) 列表推导式(List Comprehensions)也叫列表解析,灵感取值函数式编程语言Haskell,它是一个非常有用和灵活的工具,可以用来动态的创建列表。
语法:1 2 [有关A的表达式 for A in B] 如:list1 = list(x**2 for x in range(10)) #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81])
案例1:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 createlist = [1 ,1.0 ,True ,"WEIYIGEEK" ,'c' ] pjlist = ['Python' ,'Version 3' ] print(createlist) print(createlist[0 ]) print(createlist[1 :3 ]) print(createlist[-3 :]) print(pjlist * 2 ) print(createlist + pjlist) createlist[0 ] = 'This is a demo' print(createlist[:]) letters = ['h' ,'e' ,'l' ,'l' ,'o' ] print(letters[1 :4 :2 ])
Python列表案例1
案例2: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 L=['Google' , 'Runoob' , 'Taobao' ] print("L[1]列表修改前:" ,L[1 ],end=" " ) L[1 ] = 'Weiyigeek' print("修改后:" ,L[1 ],end="\n" ) del L[2 ]print ("删除L[2]后的列表 : " , L)print (len(L))print(L+[1 ,2 ,3 ]) print(L * 2 ) print('Weiyigeek' in L) for x in range(len(L)): print(x,L[x],len(L[x])) x = [[1 ,2 ,3 ],['a' ,'b' ,'c' ]] print(x[0 ][1 ]) print(x[1 ][1 ]) L=['Google' , 'Runoob' , 'Taobao' ] mix = [1 ,'list0' ,2.3 ,[1 ,2 ,3 ]] empty = [] print("L[1]列表修改前:" ,L[1 ],end=" " ) L[1 ] = 'Weiyigeek' print("修改后:" ,L[1 ],end="\n" ) del L[2 ]print ("删除L[2]后的列表 : " , L)print (len(L))print(L+[1 ,2 ,3 ]) print(L * 2 ) print('Weiyigeek' in L) for x in range(len(L)): print(x,L[x],len(L[x])) print(mix[3 ][1 ]) list1 = [(x,y) for x in range(10 ) for y in range(10 ) if x % 2 == 0 if y % 2 != 0 ] print(list1) list2 = [] for x in range(10 ): for y in range(10 ): if (x % 2 == 0 ) & (y % 2 !=0 ): list2.append((x,y)) print(list2) list1 = ['1.Jost do it' ,'2.一切皆有了能' ,'3.让编程改变世界' ] list2 = ['2.李宁' ,'3.鱼C工作室' ,'1.Nick' ] list3 = [name+':' +title[2 :] for title in list1 for name in list2 if name[0 ] == title[0 ]] print(list3)
Python列表案例2
注意事项: 1)列表是可以修改里面的元素的值,如 list[0] = ‘This is a demo’ ; 2)Python 列表截取可以接收第三个参数,参数作用是截取的步长以下实例在索引 1 到索引 4 位置并设置为步长为 2(间隔一个位置)来截取字符串; 3)通过赋值得到列表,会 随着父列表的顺序的变化而变化 ,
4.3.4 元组(tuple) 元组tuple是戴上了 枷锁的列表 (与数值/字符串类型一样不能随意对其元素改变),由于列表功能强大,需要进行一定的限制,
格式:元组写在小括号 () 里,元素之间用逗号隔开(也可以直接 tuple = 1,2,3,4 方式)。
我们主要从创建和访问元组,更新和删除一个元组,元组相关的操作符进行学习: 拼接操作符(两边的数据类型要一致) 重复操作符( 8 * (8,)) 关系操作符(大于、小于等) 成员操作符([in] [not in]) 逻辑操作符(not>and>or)
案例: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 tuple1 = ('abc' ,789 ,2.23 ,'WEIYIGEEK' ,70.2 ) pjtuple = ('Python' ,'Version 3.7.2' ) print(tuple1[1 :3 ]) print(pjtuple * 2 ) print(tuple1 + pjtuple) tup1 = () tup2 = (20 ,) print("空元组" ,tup1) print("一个元素" ,tup2) tup = (1 ,2 ,3 ,4 ) temp = 1 ,2 ,3 ,4 print("类型:" ,type(temp)) print("tuple创建:" ,8 * (8 ,)) print("切片:" ,temp[1 :3 ]) temp = ('小明' ,'小经' ,'小陈' ,'小郑' ) temp = temp[:2 ] + ('郑老师' ,) +temp[2 :] print("拼接的元组:" ,temp) del temp print(tup * 2 ) L = ('Google' , 'Taobao' , 'Runoob' ) print("{0} , {1} , {2}" .format(L[-1 ],L[1 ],L[0 ])) e = (i for i in range(10 )) next(e) next(e) next(e) next(e) next(e) for each in e: print(each, end = " " ) Sum = sum( i for i in range(101 )) print("Sum =" ,Sum)
Python元组案例
注意事项: 1) 虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。 2) 注意构造包含 0 或 1 个元素的元组的特殊语法规则,及空元组。 3) 元组/列表/字符串都属于 sequence(序列)都有共同点:通过索引获取元素(支持负数索引),可通过分片的方法得到一个范围内的元素的集合,有很多的共同的操作符如 重复操作符,拼接操作符,成员关系操作符 4) 元组不存在列表推导式,而是生成器推导式 genexpr 之中;
4.3.5 集合(set) 集合(set)是一个无序的不重复元素序列,是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员,基本功能是进行成员关系测试和删除重复元素。
格式:使用大括号 { } 或者 set() 函数创建集合;如 parame = {value01,value02,…} ,set(value);1 2 格式:set1 = {1 ,2 ,3 ,4 ,5 ,6 } set2 = set(1 ,2 ,3 ,4 ,5 ,6 )
案例: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 student = {"weiyigeek" ,"WEIYIGEEK" ,"陶海鹏" ,"郑老狗" ,"陈挥铭" ,'WEIYIGEEK' } print(student) if 'weiyigeek' in student: print("weiyigeek 存在!" ) else : print("不存在!" ) a = set('abracadabra' ) b = set('alacazam' ) print(a - b) print(a | b) print(a & b) print(a ^ b) set1 = {'weiyi' ,'geek' ,12.345 } set2 = set("Python" ) print(type(set1),set1) print(type(set2),set2) print(set1 - set2) a = {x for x in 'abcasdsadsa' if x not in 'abc' } tuple1 = (1.1 ,2.2 ,3.3 ,ord('a' )) print(sum(tuple1)) print(sorted([23 ,56 ,2 ,16 ,96 ,12 ,14 ])) temp = [23 ,56 ,2 ,16 ,96 ,12 ,14 ] print(list(reversed(temp))) print(list(enumerate([23 , 56 , 2 , 16 , 96 , 12 , 14 ]))) print((1 ,2.3 ,4 ))
Python集合案例
注意事项: 1) 与列表推导式类似,同样集合支持集合推导式(Set comprehension) 2) 创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
4.3.6 字典数据(dict) 字典是另一种可变容器模型,且可存储任意类型对象,是集合的表亲;字典与集合两者之间的区别 在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,空字典用 { } 标识,它是一个无序的键(key - 必须唯一不能重复) : 值(value - 使用不可变类型) 的集合。 使用构造函数 dict() 可以直接从键值对序列中构建字典,格式如下所示:
1 2 dict(([key,value],[key,value])) dict1 = {'name' :"weiyigeek" ,[key,value]}
案例: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 d = {key1 : value1, key2 : value2 } d['key1' ] /**字典访问方式*/ d['key1] = value /**字典赋值*/ del d[' key1'] /**删除指定字典的键值*/ del d /**删除字典**/ createdict = {} createdict[' one'] = "1 - Python3" createdict[' two'] = "2 - Version 3.7.2" tinydict = {' name':"weiyigeek",' age':21,' love':"Python3 PHP html5 JAVASCRIPT"} print(createdict) #输出字典值/value print(createdict[' one']) #输出键为 ' one' 的值 print(tinydict.keys()) #输出所有键 print(tinydict.values(),end="\n\n") #输出所有值 #构造函数 dict() 可以直接从键值对序列中构建字典 cdict1 = dict([(' Runoob', 1), (' Google', 2), (' Taobao', 3)]) #方式1 可迭代对象方式来构造字典 cdict2 = dict(Runoob=1, Google=2, Taobao=3) #方式2 传入关键字 cdict3 = dict(([' a',2],[' b',3])) #方式3 传入内嵌列表 cdict4 = dict(zip([' one', ' two', ' three'], [1, 2, 3])) #方式4 映射函数方式来构造字典 jiecheng = {x: x**2 for x in (2, 4, 6)} ##方式5 字典推导式 print(cdict1) print(cdict2) print(jiecheng) #补从字典推导式 >>> x = {i: i % 2 for i in range(10)} #这里是计算表达式 {0: 0, 1: 1, 2: 0, 3: 1, 4: 0, 5: 1, 6: 0, 7: 1, 8: 0, 9: 1} >>> y = {i: i % 2 == 0 for i in range(10)} #这里是条件表达式 {0: True, 1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False}
Python字典案例
注意事项: 1) 列表是有序的对象集合,字典是无序的对象集合(类似于JSON) 2) 键必须是唯一的,但值则不必 ,值可以取任何数据类型,但键必须是不可变的(字符串,数字或元组) 3) 不允许同一个键出现两次,创建时如果同一个键被赋值两次,后一个值会覆盖前值。 4) 字典也有自己的推导式