变量
变量可以理解为内存空间的门牌号。
标识符
什么是标识符
标识符是自己定义的,如变量名、函数名等。
标识符命名规则
- 只能包含字母、数字和下划线。变量名可以以字母或者下划线开头。但是不能以数字开头。
- 不能包含空格,但可以使用下划线来分隔其中的单词。
- 不能使用Python中的关键字作为变量名
- 建议使用驼峰命名法,驼峰式命名分为大驼峰(UserName)和小驼峰(userName)。
- 严格区分大小写
数据类型
Number
int
Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样。
float
浮点数也就是小数,之所以成为浮点数,是因为按照科学计数法表示时,一个浮点数的小数点位置是可变的。
complex
一个实数和一个虚数的组合构成一个复数。
bool
bool值是特殊的整型,取值范围只有两个值,也就是True和False
字符串
字符串就是一系列任意文本。Python中的字符串用单引号或者双引号括起来,同时可以使用反斜杠(\)转义特殊字符。
单引号(’’)和双引号(””)本身只是一种表示方式,不是字符串的一部分,因此字符串’hello’只有h,e,l,l,o这五个字符。如果’本身也是字符的话,那么就可以用””括起来,比如”I’m OK”当中包含一个’。如果字符串内部包含’或者”,但是又想当成普通字符串处理怎么办?这个时候就要用转义字符(\)来标识。
操作字符串
- 截取字符串语法:变量[开始下标:结束下标:步长],步长可省略,其默认值为1。变量[-下标],从右往左截取下标位数。变量[下标:],从下标到最后。截取规则含头不含尾、包左不包右。
- 加号(+)是字符串的连接符
- 星号(*)表示复制当前字符串
字符串常用函数
find | 检测字符串是否包含指定字符,如果是返回它的位置,否则返回-1 |
index | 检测字符串是否包含指定字符,如果是返回开始的索引值,否则提示错误 |
count | 返回str1在string中指定索引范围内[start,end]出现的次数 |
replace | 将str中的str1替换成str2,如果指定count,则不超过count次 |
split | 返回一个以切割符为分割的列表。如果maxsplit有指定值,则仅分割maxsplit个子字符串 |
capitalize | 将字符串的首字母大写 |
title | 将字符串中每个单词的首字母大写 |
upper | 将字符串转换为大写 |
列表
列表是什么
列表是由一系列按特定顺序(系统给的默认下标)排列的元素组成,列表能存储多种类型的数据,其中的元素之间可以没有任何关系。
访问列表
- 通过下标:list[2]、list[2][0]。
操作列表
修改列表元素
修改列表元素的语法和访问列表元素的语法类似,指定列表名和要修改元素的索引,再指定新值。
list[0] = 5 #通过下标获取到元素,并给其赋新的值
list[2][1] = ’lili’#列表是一个可变的类型数据,允许我们对里面的元素进行修改
添加列表元素
- 在列表末尾追加元素:使用append()方法将元素追加到列表的末尾。也可以用append()方法来动态创建列表。list.append(’susan’)
- 在列表中插入元素:通过指定新元素的索引和值,使用insert()方法可以在列表的任何位置添加新元素。list.insert(1,’susan’)
删除列表元素
- 使用pop()方法删除元素:pop方法用于移出列表中的一个元素(默认是最后一个元素),可以指定元素索引,并且返回该元素的值。
- 使用del语句删除元素:如果知道要删除的元素在列表中的位置,可以使用del语句删除元素,元素一旦被删除之后就再也无法访问(从内存中将其删除)。del list[1]
- 使用remove()方法删除元素:当不知道元素索引,只知道元素值的时候,使用remove方法删除元素。它是通过元素的值进行删除。
查找列表元素
所谓的查找,就是看看指定的元素是否存在。
- in(存在),如果存在那么结果为true,否则为false。’jack’ in list
- not in(不存在),如果不存在那么结果为true,否则为false。
列表函数
len(list) | 查看列表的长度,返回列表元素的个数 |
max(list) | 返回列表元素的最大值 |
min(list) | 返回列表元素的最小值 |
list.count(obj) | 统计某个元素在列表中出现的次数 |
extend(list) | 扩展列表,在一个列表的末尾一次性追加一个新的列表,参数为一个列表 |
list.sort() | 对列表进行排序 |
list.clear() | 用于清空列表 |
元组
什么是元组
Python的元组和列表类似,不同之处在于元组的元素不能被修改,而列表的元素可以被修改,也可以进行分片和连接操作。元组用小括号创建,列表用方括号创建。元组是不可变类型。
元组名=(元素1,元素2,元素n……)
操作元组
访问元组
- 通过下标:tup[1]
删除元组
- 元组和列表不一样,元组中的元素是不允许被单独修改和删除的,但是我们可以使用del语句来删除整个元组。del 元组名
元组截取
- 元组的元素虽然不能够被改变,但是元组也是一个序列,也可以通过索引去访问和截取元组中指定位置的元素。
多维元组
- 多维元组就是元组中的元组,元组中的元素可以是一个新元组。
元组的函数
len() | 获取元组的长度 |
tuple(list) | 将列表转换为元组。需要重新赋值。 |
字典
字典是另一种可变容器类型,且可以存储任意类型对象。列表元素进行修改的话,通过索引进行修改,如果当前元素的顺序发生改变,此时还需要修改索引才能成功完成元素的修改。有没有办法,既能够存储多个数据,又能很方便准确的定位元素呢?答:字典
字典名={key1:value1,key2:value2}
操作字典
访问字典
- 字典中根据键访问值,可以指定字典名和放在方括号内的键。dict[’ name’]
修改字典元素
- 字典元素也是可以修改的,通过key找到具体元素之后,给一个新的元素值即可。dict[’ name’] = ’jack’
添加元素
- 动态的向字典中添加元素的时候,只要添加的键在字典中不存在,就会新增这个元素。dict[’ hobby] = ’足球’
删除字典元素
- 使用del语句删除元素:del既可以删除指定的字典元素(列表也可以指定),也可以删除整个字典,如果不指定key,代表删除整个字典。del字典名[key]
- 使用clear()方法清空整个字典:被清空的字典最后会剩下一个空的字典在,而用del删除的字典在程序中就不存在了。字典名.clear()
Python字典函数
len(dict) | 计算字典中元素的个数 |
str(dict) | 输出字典,以可打印的字符串表示 |
type(variavle) | 返回输入变量的数据类型,如果变量是字典就返回<class ’dict’> |
dict.fromkeys(seq[,value]) | 创建一个新字典,以序列seq中元素做字典的值,value为字典所有键对应的初始值 |
dict.get(key,default=value) | 如果字典中有该Key对应的元素,就输出原来的,如果没有就输出你指定的 |
dict.keys() | 以列表返回一个字典所有的键 |
dict.values() | 以列表返回一个字典所有的值 |
可变(mutable)参数和不可变(immutable)参数
Python中string、tuple和number是不可变对象,而dict、list等是可变对象,不可变对象在进行重新赋值的时候,实际上是将原始值丢弃,将变量指向一个新值(新的内存空间);可变对象的可变性实质上是指更改可变对象中的子对象,比如list中的item元素的更改。
深拷贝与浅拷贝
只有可变参数才存在深拷贝和浅拷贝的区别,不可变参数不存在深拷贝与浅拷贝的区别。
直接赋值
其实就是对象的引用(别名)。即通过等于号进行赋值时,a和b指向内存中的同一个地方,并没有再开辟新的内存空间。
浅拷贝
父对象指向不同的地址空间,但子对象指向相同的地址空间。不拷贝子对象,当子对象进行更改的时候,原始子对象也会改变。注:list为父对象,list[1]为子对象。常用操作:列表的切片操作,copy模块的copy()函数。
深拷贝
父对象指向不同的地址空间,子对象也指向不同的地址空间。会拷贝子对象,当子对象进行更改的时候,原始子对象不会改变。常见操作:copy模块的deepcopy()函数。
list02 = list01.copy.deepcopy()