前言
python中的变量相当于是C++中的对象,里面有各种方法,可供程序员使用。
python中还有各种内置函数比如str(),sort()等函数,可供程序员来操作不同对象。
python的注释是使用"#"
window中如果没有安装python可以到python官网下载安装。
一般在linux中会自动安装python解释器。
可以编写python文件,注意需要以.py结尾(实际linux文件属性不以文件后缀时决定,而是创建时决定,如何创建的)。使用python解释器来执行。
也可以使用python终端来编写python代码,执行。python终端使用exit()或者Ctrl+d退出。
Python之禅:
一.变量
1.1 变量命名
python变量命名和C语言的变量命名类似。
- 只能包含字母,数字,下划线。变量名可以字母或下划线大头,不能以数字大头。
- 变量名不能包含空格,可以使用下划线分隔其中单词。
- 不要将python关键字和函数名用作变量名。即不要使用python保留用于特殊用途的单词。
2.1 变量定义
python变量定义不需要指定类型,直接定义即可。
2.2 多变量赋值
a=b=c=1
a,b,c=1,2,'tom'
二.类型
2.1 字符串
2.1.1 定义
在python中用引号括起来的都是字符串,其中引号可以是单引号,也可以是双引号。并且支持转义符号。
这种灵活性可以让你能够在字符串中包含双引号和单引号。
python中的字符串是不可变的,这意味着一旦创建一个字符串无法直接修改其中的字符。只能通过新建字符串来修改来间接修改其中的内容。
2.1.2 操作
- 以首字母大写的方式显示每一个单词。 title()方法。
- 全部转为大写upper(),全部转为小写lower()
- 拼接字符串,'+'或'+='
- 删除空格。strip()删除两端空格,rstrip()删除右边空格,lstrip()删除左边空格。
- 拆分字符串。利用字符串split()方法实现将字符串按照指定字符拆分成字符串列表。
- 拼接字符串。使用join()函数,将字符串列表,按照指定字符连接起来。
2.1.3 字符串比较
- ==和!=:
==比较的时两个字符串值是否相同,!=和==相反。两比较方式区分大小写。
- >, <, >=和<=:
字符串比较大小是按照字符的字典顺序进行比较的,区分大小写。
- is:
用来比较两字符串是否完全相同。不仅仅是值,还有地址。
- 区分大小写比较字符串
将需要比较的字符串全部转化为大写或者小写再进行比较。
或者使用str.casefold()方法,也是将字符大写转化为小写,但是lower只局限于存在ascll中的字符,casefold不局限于存在ascll中的。
2.1.4 python2中的print语句
在python2中无需将要打印的内容加在括号内。从技术上来说,python3的print是一个噶不是故意没所以括号必不可少。但是有些python2的print语句有的也包含括号,而行为与python3稍有不同。
2.2 整数
2.2.1 运算
在python中,可对整数进行加(+)减(-)乘(*)除(/),乘方(**),取余(%)运算。
使用括号修改运算次序。
2.2.2 浮点数
python将大小数点的称为的浮点数。也支持运算。但是运算结果的小数位数是不确定的,所有的语言在表示浮点数时都存在这个问题,原因是鉴于计算机内部表示数字的方式。
2.2.3 str()函数
str()函数可以将非字符串值表示为字符串。
2.3 列表
列表由一系列按照特定顺序排列的元素组成。里面可以包含字符串,数字,列表等,列表中可以包含任何没有关系的元素。
在python中使用方括号([])来表示列表。并用逗号来分隔元素:
使用print打印列表,会将列表中所有的元素打印,包括方括号。
2.3.1 访问和使用列表元素
可以使用索引来访问元素。和C语言一样,列表的索引也是从0开始的。这与列表操作的底层实现相关。
C语言数组索引为什么从0开始?
C语言的数组以内存地址的偏移量来表示。比如arr[0] <=> arr + 0,arr为数组的起始地址,加0为第一个元素。arr[1] <=> arr+1,起始地址加1,实际为arr起始地址加元素类型的大小,访问到第二个元素。
在python中还提供了一种特殊语法。通过将索引指定为-1,可以返回列表的最后一个元素,这种约定也适用于其他负数索引,比如:索引-2返回倒数第二个列表元素,以此类推。
使用列表元素,也可以通过索引来访问,并赋值修改。
2.3.2 在列表中添加元素
- 在列表末尾添加一个元素,使用列表的append方法。
- 在列表末尾添加多个元素,使用extend()方法或者使用'+='或'+'。
- 在列表中插入元素,使用insert(),可以在列表中任何位置添加新元素。你需要为此指定新元素索引和元素。
2.3.3 从列表中删除元素
元素被删除了,就不能使用了。
- 使用del删除元素,需要知道元素在列表中的位置(索引)。
比如要删除"redline"元素,它的索引为2。
- 使用列表方法pop(),来删除元素,并且可以使用变量来获取该元素。
pop()不传参时,表示最后一个元素,传参表示对应删除元素的索引。
- 根据值来删除元素。使用remove()方法。
注意:方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要
2.3.4 组织列表
- 使用列表的sort()方法对列表进行永久性排序
向sort()方法传递参数reverse=True可以实现按照首字母字典序相反的顺序永久性排序。
由于排序需要进行比较,所以列表的sort()方法需要列表元素相同。
当列表一个元素也包含多个元素时,可以自定义函数来获取比较的元素。
- 使用sorted()函数对列表进行临时排序,不会修改原来的列表
- 反转列表,使用列表的reverse()方法。
- 获取列表长度。使用len()函数
-
使用for循环,遍历整个列表
2.3.5 创建数值列表
- 使用range()函数可以生成一系列数字。
range()第一个参数是一些列数字的最小值,第二个参数是最大值(不包含),第三个参数是步长。
range()函数还可以设置第三个参数来指定步长。默认步长是1。
- 使用range()函数创建数字列表。
使用list()函数,或者使用列表append()方法。
- 对数字列表进行简单的统计计算。求最大值,最小值和总和。
2.3.6 列表解析
列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。
要使用这种语法,首先需要指定一个描述性的列表名,然后在方括号中定义表达式,用于生成你要存储到列表的值。
表达式可以这样理解,元素值 + 元素集合 + 条件
python中还有其他类型的解析:
- 如果使用的是中括号,表示列表解析
- 如果使用的是大括号,表示集合解析
- 如果使用的是大括号,且里面的元素是key:value模式,表示字典解析
2.3.7 复制列表
我们可以使用切片来进行列表的复制,对于列表中不带有可变长的类型元素时,我们可以得到一个新的列表。如果带有可变长的类型元素,由于切片复制时浅拷贝,新得到的列表该元素拷贝的时原来列表该元素的引用,两元素执行同一个列表。
不使用切片来复制列表,使用直接赋值的方式,并不能得到一个新的列表,而是获取到列表的引用,两个列表实际共用一个空间。
2.3.8 列表函数和方法
- 函数
- cmp(list1,list2):比较两列表元素
- len(list):列表元素个数
- max(list):返回列表元素最大值
- min(list):返回列表元素最小值
- list(seq):将元组转化为列表
- 列表方法
- list.append():在列表末尾添加一个新对象
- list.count(obj):统计某个元素在列表中出现次数
- list.extend(seq):在列表末尾一次性追加另一个序列中的多个值
- list.index(obj):在列表中找到某个值第一个匹配项的索引值
- list.pop(index=-1):移除列表中的一个元素,默认最后一个元素,并返回该元素的值
- list.remove(obj):移除列表中某个值的第一个匹配项
- list.reverse():反转列表元素
- list.sort(cmp=None,key=None,reverse=False):对原列表进行排序,会修改原列表
- list.sorted(cmp=None,key=None,reverse=False):对列表进行临时排序,返回排序后的列表,不会修改原列表
2.4 元组
使用圆括号括起来的元素定义的对象被称为元组。你可以使用索引来访问元素,但是元组中的元素是不可以修改的。
2.4.1 修改元组
虽然说元组中的元素不能修改的,但是元组变量是可以修改的。
当元组中包含可变长类型元素时,可以对可变长元素进行修改:
元组连接组合
元组复制
2.4.2 遍历元组
2.4.3 删除元组
元组中的元素是不能被删除的,但是我们可以使用del语句来删除整个元组
2.4.4 元组比较
python中的元组可以进行比较,比较方式为:
- 如果是同类型的,则依次比较对应值,返回结果
- 如果不是同类型的,则检查它们是否是数字
- 如果是数字,执行必要的数字强制类型转化,然后比较
- 如果有一方是数字,则另一方的元素"大",数字是最小的
- 否则通过类型名字的字母顺序进行比较
如果有一个元素先到达末尾,则另一个长的元组大
2.4.5 python内置函数
- cmp(tup1,tup2):比较两元组元素
- len(tup):计算元组元素个数
- max(tup):返回元组中元素最大值
- min(tup):返回元组中元素最小值
- tuple(seq):将列表转化为元组
2.5 字典
在python中,字典是一系列键值对,每一个键都与一个值相关联,你可以通过键来访问与之相关联的值。键的类型可以是python中的数字,字符串,元组,不可以是列表和字典,是可比较的数据类型,与键相关联的值可以是数字,字符串,列表乃至字典等任何数据类型。
注意:python中字典的键是不可变的,值是可变的。
在python中,字典放在花括号{}中的一系列键值对,键与值之间使用冒号分隔,键值对之间使用逗号分隔。
2.5.1 访问字典中的值
可以通过中括号的方式,通过键值来访问字典中的值。如果访问一个字典中没有的键值,会报错。
2.5.2 修改字典
2.5.3 遍历字典
- 顺序遍历字典
- 遍历字典中的所有的键和值
2.5.4 字典内置函数和方法
- 函数
- cmp(dict1,dict2):比较两字典元素
- len(dict):计算字典键的个数
- str(dict):输出字典可打印字符串表示
- type(dict):返回输入对象的类型
- 方法
- dict.clear():删除字典中的所有元素
- dict.copy():返回一个字典的浅复制
- dict.fromkeys(seq,val):创建一个新字典,以序列seq中的元素做键,val为字典所有键对应的初始值
- dict.get(key, default=None):返回指定键得的值,如果不存在返回default的值
- dict.has_key(key):如果key在字典中返回True,否则返回false。
- dict.items():以列表返回一个可遍历的元组数组
- dict.keys():以列表返回一个字典所有的键
- dict.values():以列表返回字典中的所有值
- dict.setdefault(key, default=None):和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
- dict.update(dict2):把字典dict2的键/值对更新到dict里
- dict.pop(key, default):删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
- popitem():返回并删除字典中的最后一对键和值,返回元素类型为元组。
2.6 集合set
集合是一个无序不重复元素集,基本功能包括关系测试和消除重复元素。集合对象还支持联合,交,差对称差集等数学运算。
2.6.1 创建集合
集合中的元素也是用"{}"来括起来的,但是创建空集合需要使用set(),使用{}会创建一个空字典。
set集合类需要的参数必须是迭代器类型,如:序列,字典等。然后转化成无序不重复的元素。由于集合是不重复的,所有可以对字符串,列表,元组进行去重操作。
- 创建空集合
#创建空集合
s=set()
#创建列表类型集合
s1=set([])
#创建元组类型集合
s2=set(())
#创建字典类型集合
s3=set({})
- 创建非空集合
2.6.2 集合操作
- 添加元素
添加元素有两种方式,分别是add()和update()。
add():方法是将传入元素作为一个整体加到列表中:
update():将传入元素拆分成单个字符,保存到集合中,去掉重复元素。可以一次添加多个值
- 删除元素
remove(element) | element :表示要查找并删除的元素 | 在集合setVar中查找element元素,如果存在则删除;如果没找到,则报错。 |
---|---|---|
discard(element) | element :表示要查找并删除的元素 | 在集合setVar中查找element元素,如果存在则删除;如果没找到,则什么也不做。 |
pop() | 删除并返回set类型的s中的一个不确定的元素,如果为空引发KeyError错误。 | |
clear() | 清空s集合中的所有元素 |
remove():
discard():
pop()和clear()
2.6.3 遍历集合
注意:集合不可以通过索引访问。使用enumerate()函数的索引是enumerate()函数自己建立的。
2.6.4 集合的交叉并补
既然是集合,那就会遵循集合的一些操作方式。如求交集,并集和差集等。
交集 | & | 取两集合公共的元素 | >>> set1 & set2 |
并集 | | | 取两集合全部的元素 | >>> set1 |
差集 | - | 取一个集合中另一集合没有的元素 | >>> set1 - set2 {1,2} >>> set2 - set1 |
对称差集 | ^ | 取集合 A 和 B 中不属于 A&B 的元素 | >>> set1 ^ set2 |
- 交集
python中求集合的交集使用的符号是'&',返回两个集合共同的元素。
- 并集
python中求集合的并集使用的符号是'|',返回两个集合合并,并去重后的元素。
- 差集
python中求集合的差集使用的符号是'-',取一个集合中另一集合没有的元素。
差集符号'-'等价于集合方法difference。
- 对称差集
python中求集合的并集使用的符号是'^',取两个集合不存在于两个集合交集中的元素。
对称差集符号'^'等价于集合方法symmetric_difference
2.6.5 集合的范围判断
集合可以使用>,<,>=,<=,==,!=,来判断某个集合是否完全包含于另一个集合,也可使用子父集判断函数。
这些符号并不是比较集合元素大小,而是用来判断两集合之间的关系。
2.6.6 不可变集合frozenset
frozenset是不可变集合,不像set可以增加删除集合中的元素,该集合中的内容是不可变的。类似字符串和元组。其他功能和set一样。
frozenset不可变集合中根本就没有集合操作函数,add()update()和remove(),discard()和pop()clear()方法。