总结2
基本数据类型及其常见操作和内置方法
布尔值bool
布尔值是表示事物真假两个状态的数据类型,它更偏向于最终做出决定的结果。
存储形式:True
表示真、对、可行;False
表示假、错、不可行
除了True/False
表示布尔状态,还有其他数据也带有布尔属性,又可以被认为是隐式布尔值。
整型int和浮点型float
整型和浮点型都是用来记录数字的数据类型,简单来说,整型记录整数,浮点型记录小数
类型转换
用int()转换其他数据变为整数,主要是对浮点型进行强制转换
用float()转换其他数据变为浮点数,可以识别字符串中一个小数点转换为浮点小数。
进制转换
对于整数来说,有二进制、八进制、十进制、十六进制之分(常见)
用bin(),oct(),int(),hex()
进行互相的转换。
数字在显示上采取前缀0b\0o\0x
来代表2、8、16进制。
字符串str
用来记录字符组合的数据类型,是不可变类型数据。
定义
s1 = 'my type is str'
字符串使用引号引起来,在python中可以是单双引号,可以是连续三个单双引号。
类型转换
字符串可以将所有的数据类型变成字符串
字符串基础操作
-
索引取值 -- [数字]
-
切片操作 -- [num1:num2:num3]
- 可以通过指定头尾索引的方式来切出一个新的字符串
- num3默认为1不写,可以通过它修改方向或步长
- 还有分别省略数字1,2,3的写法,都是有默认值的
联系:在后续列表和元组的操作中,所有的索引取值和切片操作都一模一样。
-
统计字符串的长度 -- len()
len()可以统计字符串、列表、字典、元组、集合的长度,对应各种数据类型最小元素的个数。
字符串之输入输出操作
-
输入——input
变量 = input(提示信息) # input会先向用户打印一些提示信息,然后等待用户输入,输入后得到字符串,可以赋值给变量。
注意:input从用户获取的数据都是字符串类型的数据,我们可以从下面的知识了解
python2与python3的input关键字区别
python2的逻辑是要求用户输入相应数据类型的形式,并存储为相应的类型。 甚至在输入不带引号的aa时,会报错,因为字符串应该是带引号的。 这十分不符合方便用户的操作逻辑。 而python2中也有与python3的input功能一样的关键字raw_input
-
输出——print()
括号内可以放多个变量或者数据值,用逗号隔开
当用print打印字符串时会自动换行,可以通过
end=
取消换行 -
格式化输出——占位符
在python中,最基本输出就是用print函数将数据以字符串形式打印出来。
而字符串的格式化输出则有占位符和内置函数format以及f方法变种。
%s
与%d
,将这两个符号放到字符串的某个位置,可以利用语法对其进行替换。在字符串或者字符串变量后面跟上
%
,再跟上一个数据值,那么print就会输出一个替换掉%s的字符串或者替换%d的数字,这就是占位符的用法。占位符有以下几个用法:-
多个占位符出现在一个字符串中
多个占位符必须要有对应个元素进行替换,多了不行,少了也不行。
-
填充0至多少位
%05d
的意思是如果不足5位则填充至五位,且用0填充 -
%s
常见类型数据都支持替换,%d
只支持数字
-
-
格式化输出——format()
内置方法,字符串中含{},后续跟format(变量1,变量2……)
-
等价于占位符
-
索引取值并支持反复使用
-
关键字取值
-
-
格式化输出——f''
优点在于,不需要后接format并且整理变量与数据,想用时去调用已有变量就可以了
name = 'jason' age = 30 f'{name} is {age} years old' # 这个方法可以随时引用前面赋值过的变量 'jason is 30 years old'
字符串的内置方法
-
移除字符串首尾的字符(默认移除空格)—— strip()
-
按指定的字符分割字符串生成一个列表 —— split()
后续的内置方法使用频率稍低一些
- 转换大小写 —— upper(),lower()
- 判断大小写 —— isupper(),islower()
- 判断纯数字 —— isdigit()
- 替换字符串中指定的内容 —— replace(旧内容,新内容)
- 字符串的拼接
- 用运算符 # 不建议,因为底层效率较低
- 内置方法 —— join(所有元素都是字符串的列表) # 这个拼接的效率高些
- 统计指定字符出现的次数 —— count(指定的字符)
- 判断字符串的开头和结尾 —— startswith(),endswith()
后续的使用频率更低了
-
大小写相关
- 每个单词首字母大写 —— title()
- 首个单词首字母大写 —— capitalize()
- 转换所有字母的大小写 —— swapcase()
-
根据内容找索引 —— find()、index()
列表list
用来存储多个数据值的数据类型,是可变类型的数据。
定义
l1 = []
l2 = [1, 2, 3]
中括号括起来,用逗号隔开所有元素
类型转换
list(其他数据类型)
包括能够被遍历(能被for循环的)的类型,如元组、字符串、字典、集合
列表基础操作
-
索引取值
-
切片操作
-
统计列表长度(元素个数)—— len()
-
对某个数据值修改 —— 根据索引赋值
列表内置方法
-
列表添加数据值
-
尾部添加单个数据值 —— append(新元素值)
-
任意位置添加数据值 —— insert(插入位置,新元素值)
-
拼接/扩展列表 —— extend(尾部将拼接的列表)
-
-
删除列表数据
-
通用删除关键字 —— del(索引找值)
-
数据值查找删除 —— remove(删除内容)
-
索引查找弹出 —— pop(删除内容的索引)
pop会返回删除的内容
-
-
排序 —— sort(reverse = True)
如果括号里没写reverse则默认升序排列,写了则降序排列
-
统计某数据值出现次数 —— count()
-
颠倒列表的顺序 —— reverse()
字典dict
字典相对于列表,是将索引的顺序关系变成了键值对的搜索关系,键是对值的描述,每个键值对之间逻辑上不存在顺序关系。
定义
变量名 = {键1:值1,键2:值2}
大括号括起来,键与值之间用冒号隔开,每个键值对之间用逗号隔开。
类型转换
字典的类型转换要求苛刻,一般不会使用
dict([['key1', 1], ['key2', 2]]) # 只能转换多元素的类型,且每个元素中还要有两个元素
# {'key1': 1, 'key2': 2}
常用操作与内置方法
-
按k取值
-
用内置方法get取值(推荐)—— get()
-
修改值的数据
user_list['kaka'] = '110' # 当键存在时,这一句就是修改对应的值
-
新增键值对
user_list['lulu'] = '119' # 当键不存在的时候,这一句就是新增键值对
-
删除数据 —— del(按k找值)、pop(要弹出键值对的k)
pop会返回删除的键值对
-
统计字典中键值对个数 —— len()
-
字典三剑客
-
拿到所有键 —— keys()
-
拿到所有值 —— values() 也是用字典直接取到值的唯一方法
-
拿到所有键值对 —— items()
-
补充说明(使用频率低)
-
快速生成有默认值的字典 —— fromkeys(字典键的列表,默认值)
-
添加键值对 —— setdefault()
当键存在时不操作,当键不存在时新增键值对
-
弹出键值对 —— popitem()
元组tuple
元组是可以容纳多个元素值的数据类型,但是与列表不同,它每个索引对应的数据‘不变’,是不可变类型的数据。
定义
t1 = (1, 2, 3, 4)
元组用小括号括起来,每个元素之间用逗号隔开
类型转换
tuple()
# 可以转换可遍历的数据类型
常见操作
-
索引取值
-
切片操作
-
统计元组元素个数 —— len()
-
统计元组内某个数据值的出现次数 —— count()
-
得到元组指定数据值的索引值 —— index()
-
注意事项
1.元组内如果只有一个元素,那么逗号不能少 2.元组内索引绑定内存地址不能修改 3.元组不能新增或删除类型
集合set
集合是容纳不重复的多个元素的数据类型,有无序,无重的特点。
定义
s1 = set() # 空集合
s2 = {1, 2 ,3}
集合用大括号括起来,每个元素之间用键值对隔开,注意与字典的区分。
集合的应用场景一般用于
- 去重
- 关系运算
去重(类型转换)
t1 = (1, 2, 3, 2, 2, 3, 2, 1, 2)
s1 = set(t1) # 集合不存在重复的元素的特点让它具备去重的功能
t1 = tuple(s1)
t1 # (1, 2, 3)
关系运算
-
&
and符表交集 -
-
减号符表独有 -
|
管道符表并集 -
^
向上箭头表各自独有 -
><
大小于号判断包含
python中的各种运算符
基本运算符
+
加 -
减 *
乘 /
除 %
取余 //
取整 **
幂运算
比较运算符
比较运算符会产出布尔类型的数据值,有:
> < >= <= ==等于 !=不等于 =是赋值符号不是比较运算符
print(2 >= 2) # True
赋值运算符
除了常规的赋值运算符=
,python还提供了很多便利的赋值语法。
-
链式赋值
a = b = c =10 # 三个变量同时绑定了同一个值
-
交叉赋值
m, n = n, m # 即可交换两个变量的值
-
解压赋值
t1 = (111, 222, 333) a, b, c = t1 # 等同于 a = t1[0] b = t1[1] c = t1[2]
*变量名
可以接收所有没有被接收的变量并组合成列表l1 = [111, 222, 333, 444, 555] a, b, *c = l1 print(a, b, c) # 111 222 [333, 444, 555] # 不仅可以在最尾部接收还可以在中部 a, b, *c, d = l1 print(a, b, c, d) # 111 222 [333, 444] 555
逻辑运算符
我们常听到的与、或、非就是逻辑运算
Python中对应的关键字为and
|or
|not
-
and-与
and两侧的两个条件都成立则得出成立,即True属性
-
or-或
or两侧的两个条件,只要一个是成立的,则成立,即True属性
-
not-非
非,即真假转换,成立前面加个not就是不成立
and\or\not混用时的优先级顺序,这个顺序是存在的,但是并不需要记忆,我们应该用括号来划分条件判断的优先级,不然这样的程序是难以识别的。
成员运算符
成员运算符in
用于判断一个数据值是否存在于字符串、元组、列表、集合和字典中。
-
列表成员判断
最小的元素是列表中的元素,元素所含的字母不能做运算
同样也适用于元组和集合。
-
字符串成员判断
字符串的最小元素是一个字,也可以是字的组合
-
字典成员判断
字典只有键参与成员运算,其键对应的值不参与成员运算
身份运算符
身份运算符is
判断的是两侧的数据值是否存在一个地址中。
垃圾回收机制GC
无法通过变量找到的数据值,我们称之为‘垃圾’,而在python语言中,会自动的回收这些垃圾,而回收的逻辑原理有十二字真言:引用计数、标记清除、分代回收
引用计数
通过对数据值绑定变量的个数进行计量,新建立引用时+1,断开引用时-1,当绑定变量个数为0时视为垃圾被回收。
标记清除
标记清除主要是用于解决循环引用的问题。循环引用无法把引用计数清0。
当内存占用临界时,程序会停止运行,扫描程序中的所有数据,把产生循环的数据打上标记,最后清除掉,名为标记清除。
分代回收
有策略的减少标记清除的频率,使程序进行的流畅。策略是对多次都为被回收的数据值减少扫描。
流程控制
流程结构分为顺序结构、分支结构、循环结构,它们能够满足大部分的逻辑判断,对流程结构进行控制就是流程控制。顺序结构就是依次执行每行代码,无需特殊控制(底层已经写好了)。
分支结构-if
分支结构的主要关键字是if,它控制的是当满足某条件时,去执行某种操作,如果不满足该条件,则不执行那种操作或者转去做另外分支的操作。
if关键字
- if后跟条件,再跟一个冒号
- 如果if后的条件成立了,那么执行缩进的代码
- 缩进的代码的缩进位数必须相同
扩展:子代码块
- 相同缩进的代码块代表同级代码块
- 顶格的代码都是顶级代码
- python缩进的规范是4个空格(pycharm中可以用tab键)
- 不是所有的代码都能拥有子代码块,if关键字是可以拥有子代码块的关键字之一
else关键字
- else关键字和if同级,在if的下面
- else有子代码块
else关键字的意思是:if条件没有满足时,则运行else下方的子代码块。
elif关键字
- elif需要跟条件,并在执行到它时对条件进行判断
- elif与if和else同级,夹在两者之间。
- elif有子代码块
elif的意思是:当它上面所有的if、elif后面的条件都不满足时,而它后面的条件满足了,则执行它的子代码块。
循环结构-while
循环结构指不断的重复执行某些代码,这些代码也许会有变量、状态等变化,但是代码的内容不变时,会用到循环结构。
while关键字
- while后需要跟条件
- while下需要跟子代码块,名为循环体
while的在满足条件时执行子代码块,子代码块执行完毕后,会回到while后的条件判断,如果还满足则继续从头执行子代码块,如此循环往复。当条件判断不满足时会退出循环。
break关键字
- break单独一行
- break只能在循环体中
- 常配合分支结构使用
在循环体中碰到break后,会立即终止循环。与分支结构搭配使用即当满足一定条件时可以终止循环
continue关键字
- continue单独一行
- continue只能在循环体中
- 常配合分支结构使用
在循环体中碰到continue后,会立即结束本轮的循环,返回while的条件判断处决定是否进行下一轮循环。
循环结构-for
for关键字
- for 变量名 in 遍历的数据:
- for关键字有子代码块
for循环会依次从遍历的数据中取出数据,并存到变量中,然后执行子代码块,子代码执行完后,进行下一次遍历取值,再次执行循环体,如此循环往复。当取完遍历数据中的元素值后结束循环。
for中break和continue
- break用法不变,终止循环体
- 碰到continue结束本轮循环,返回取值阶段,取下一个值进行下一轮循环。
range语法
-
range(num1)
生成一个长度为num1的列表,从0到num1-1
-
range(num1,num2)
生成一个列表,头一个元素为num1,最后一个元素为num2 -1
-
range(num1,num2,num3)
生成一个列表,在以上基础上,加入步长概念。
经常搭配for使用用于循环遍历取值,或者单纯的控制for循环的次数
ps:range不是真的生成一个列表,而是一个会不断产生值的厂间,产生的顺序与遍历上述情形中的列表一致
字符编码理论
字符编码就是将字符与计算机语言底层的0101二进制组合对应起来。
字符显示在电脑发展的过程中经历了很大的变化,所以有很多不同的版本。
当我们使用某种编码将字符进行编码,而当解码时发现乱码,则大概率是字符编码的版本不一致导致的,这种时候,就要用更换编码版本尝试解码。
标签:总结,代码,列表,关键字,键值,字符串,数据 From: https://www.cnblogs.com/Leethon-lizhilog/p/16760607.html