- Numbers 数字类型
包括 int(整型);bool(布尔类型);float(浮点型);complex(复数)
2. String 字符串类型
1. 用单引号或者双引号标识
2. 转义\ 或 r 可以使转义字符失去转义效果
3. 联级字符串,如 "this " "is " "string" 会被自动转换为 this is string
4. 字符串拼接, + 将字符串拼接起来,* 重复字符串
5. 字符串索引:从左往右从0开始,从右往左从-1开始
6. 字符串的截取语法格式:变量 [ 头下标 : 尾下标 : 步长 ]
3. tuple 元组类型
元组用()标识,内容不可改变
4. list 列表类型
列表用[]标识,内容可以更新修改
5. dict 字典
字典用{}标识,以键值对的形式表示 {'key' : 'value' }
6. set 集合
集合用 {}标识,内部的数据是不重复的
- 数据类型转换
1. 隐式转换,可以兼容的不同类型相加,转换为同一类型
2. 显式转换,使用关键字将不同类型强制转换
1. 转换为int类型——int()
2. 转换为float类型——float()
3. 转换为字符串类型
4. 转换为元组类型——tuple()
5. 转换为列表类型——list()
6. 转换为字典类型——dict()
7. 转换为集合类型——set() - Python推导式
1. 推导式是一种独特的数据处理方式,可以将数据序列构建另一个数据序列的结构体
2. 语法:表达式 for 迭代变量 in 可迭代对象 [ if 条件表达式 ]
3. 列表推导式:list = [ i for i in 可迭代对象 if 条件语句 ]
复制代码常规循环
lis = []
for i in range(5): lis.append(i)使用列表推导式
j = [j for j in range(5) if j > 2] # [3, 4]嵌套列表推导式
l1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
l1 = [l1[i][i] for i in range(len(l1))] # [1, 5, 9]通过循环列表得到新的符合条件的列表
list1 = [1, 2, 4, 5, 7, 4, 5, 7, 8, 4, 3, 5, 6, 5, 6, 6]
list2 = [list2 + 2 for list2 in list1 if (list2 % 3 == 0)]可以进行多个for循环
list3 = [(x, y, z) for x in range(5) for y in range(4) for z in range(3)]
4. 字典推导式: dict = { key :value for i , j in 可迭代对象 if 条件语句 }字典推导式
dict0 = {x: y for x in ('a', 'b', 'c') for y in (1, 2, 3,)} # {'a': 3, 'b': 3, 'c': 3}通过循环修改原来的字典
dict1 = {"a": 10, "B": 20, "D": "hello world", "e": "python教程"}筛选出key是小写字母的值
dict2 = {key: value for key, value in dict1.items() if (key.islower())} # {'a': 10, 'e': 'python教程'}将key的值全部变成小写字母
dict3 = {key.lower(): value for key, value in dict1.items()} # {'a': 10, 'b': 20,'d': 'hello world', 'e': 'python教程'}
5. 集合推导式: set = { i for i in 可迭代对象 if 条件语句 }集合推导式: 集合推导式和字典推导式都是用{}表示,字典是键值对形式,反之是集合
set1 = {x * 2 for x in (1, 2, 2, 3, 4) if x >= 2} # {8, 4, 6} 集合自动去重推到对象为字典,keys(),values(),items()
set2 = {x for x in {'1': 1, '2': 2}.items()} # {'2', '1'}
6. 元组推导式: tuple = ( i for i in 可迭代对象 if 条件语句 )元组推导式,元组推导式和列表相同,但是元组推导式返回的是一个生成器对象
tup = (x for x in range(10)) # at 0x0000024884365E40>用类型转换tuple()将对象转换为元组
tup1 = tuple(tup) # (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) Python运算符
1. 算术运算符
+ 加法 - 减法 乘法 / 除法
% 取余 ** 幂 // 向下取整
2. 比较运算符
> 大于号 < 小于号 = 等于号
>= 大于等于号 <= 小于等于号 != 不等于号
3. 赋值运算符
+= 加法赋值运算符 -= 减法赋值运算符 = 乘法赋值运算符 /= 除法赋值运算符
%= 取余赋值运算符 **= 幂赋值运算符
//= 取整赋值运算符 := 海象赋值运算符
4. 位运算符
& 位与运算符,对应的两个二进制都为1时,结果位为1
| 位或运算符,对应的两个二进制有一个为1时,结果位为1
^ 位异或运算符,对应的两个二进制相异时,结果位为1
~ 位取反运算符,对每个二进制位取反,是负数,~x 类似于-x-1
<< 左移动运算符,二进制的位数向左移动,高位丢弃,低位补零
>> 右移动运算符,二进制的位数向右移动,高位丢弃,低位补零位运算符
a = 60 # 即 0011 1100
b = 13 # 即 0000 1101
a & b # 12 0000 1100
a | b # 61 0011 1101
a ^ b # 49 0011 0001
~a # -61 1100 0011
a << 2 # 240 1111 0000
a >> 2 # 15 0000 1111
5. 逻辑运算符
and 与,即满足所有条件则为真
or 或,即满足其中之一都为真
not 非,如果x为true,返回false,x为false,返回true
6. 成员运算符
in 如果在指定的序列中找到值返回true,否则返回false
not in 如果在指定的序列中没有找到值返回true,否则返回false
7. 身份运算符
is 判断两个标识符是不是引用自一个对象
is not 判断两个标识符是不是引用自不同对象
8. 海象运算符
1. 海象运算符本质上是一个赋值表达式,具有返回值,不能单独使用,和其他运算符一起使用海象运算符类似于赋值运算符,本质上是一个赋值表达式,具有返回值,不能单独使用,他可以将赋值掺杂在表达式之中,简化代码,没有区分优先级
主要应用场景
在if后面使用
if传统用法
a = 1
if a > 0: a += 1 # 2使用海象运算符
if b := 1 > 0: b += 1 # 2
在while后面使用,传统
numbers = [1, 2, 3, 4, 0, 5, 6]; i = 0; j = numbers[i]
while j != 0:
print("我是", j, "循环继续!")
i += 1
j = numbers[i]
numbers1 = [2, 3, 5, 7, 5, 0, 2, 3]
k = 0
while x := numbers1[k] != 0:
print("我是", x, "循环继续!") # 我是 True 循环继续!
k += 1在列表中使用
n = [(m := 1) + 1, m - 1, m * 1, m / 1] # [2, 0, 1, 1.0]
//代码效果参考:http://www.zidongmutanji.com/zsjx/472131.html- 常用的内置数学函数
python常用的内置数学函数
1.abs(x) 返回数字的绝对值 abs(-2) = 2
2.max(...) 返回最大值 max(1,2,3,4,2,1) = 4
3.min(...) 返回最小值 min(1,2,3,4,3,2,1) = 1
4.pow(x,y,z) x的y次方运算取余z后的值,z为可选参数 pow(3,3) = 27
5.random.choice(x) 在给定序列中挑选一个随机数 random.choice([1, 2, 3, 4])
6.random.random() 随机生成一个实数,范围(0,1]之间 random.random()
7.random.randint(x,y) 随机选取x-y范围内的实数 random.randint(1,10)
8.random.shuffle(x) 将序列的所有元素随机排序 print(random.shuffle([1,2,3,4,5])) = None 不能直接输入
9.uniform(x,y) 随机生成一个浮点数,范围在[x,y]之间 random.uniform(1,3) = 1.630618864424037(随机改变)
10.ramdom.sample(序列, x) 在序列中随机选取x个数 random.sample([1,2,3,4,5,6],3) 随机获取三个数 - 常用的math函数
python常用的math函数
9.math.modf(x) 返回x的带符号小数和整数部分 math.modf(-23.45) = (-0.4499999999999993, -23.0)
10.math.fmod(x,y) 返回x%y的值可带符号,对比正常的x%y取余时当x为负数时,取值会有出入 math.fmod(-22,3) = -1.0 比较 22 % 3 = 2
11.math.ceil(x) 向上取整 math.ceil(3/2) = 2
12.math.floor(x) 向下取整 math.floor(10/3) = 3
13.math.prod(iterable,start) 求iterable中所有值的积,start可选初始值 math.prod((1, 2, 3, 2), start=2) = 24
14.math.copysign(x,y) 返回x的浮点值取y的正负符号 math.copysign(2,-22) = -2.0
15.math.fabs(x) 返会x的绝对值 math.fabs(-22.22) = 22.22
16.math.lcm(...) 返回输入参数的最小公倍数 math.lcm(2,3,4,6) = 12
17.math.gcd(...) 返回输入参数的最大公约数 math.gcd(3,6,9,12) = 3
18.math.sqrt(x) 返回非负x的平方根 math.sqrt(26) = 5.0990195135927845
19.math.isqrt(x) 返回非负x的最大整数平方根 math.isqrt(20) = 4
20.math.perm(n,k) 返回不重复且有顺序的组合,正整数,n>=k,结果为 n! / (n-k)! math.perm(4.2) = 20
21.math.comb(n,k) 返回不重复且无顺序的组合,正整数,n>=k,结果为 n! / (k! * (n-k)!) math.comb(5,2) = 10
- 常用的内置数学函数
- 字符串及其常用函数
1. 字符串中访问指定的值
字符串中访问指定的值
1.用[i]下标表示,从左到右顺序从0开始,从右到左顺序从-1开始
2.变量[头下标:尾下标],截取字符串区间
2. 字符串改变值
字符串改变值
1.切片发:拼接 +,截取不需要改变的内容+需要改变的内容
2.replace函数:newSstr=str.replace(oldstr,newstr)
3. 转义字符
转义字符
1.(在行尾时) 表示续行,即可以从下一行继续编辑
2.\ 反斜杠 即取消\的转义作用
3.\' 单引号
4.\" 双引号
5.\000 空 即执行后显示空行
6.\n 换行
7.\r 回车 后面的内容移到字符串开头,并逐一替换开头部分的字符,直至将 \r 后面的内容完全替换完成。
8.r'字符串' 原始字符串,即字符串按照原来的内容输出,没有转义作用
4. 字符串格式化
字符串格式化(format % value)
%s 格式化字符串
%d 格式化整数
%nd 设置输入数字长度,不够则在前面空格补齐,n为0时用0补齐
%.nf n表示保留几位小数
例:print("我是%s,今年0%d,我会%.2f!" % ('小明', 22, 22.22222)) # 我是小明,今年022,我会22.22!
5. 字符串format函数
字符串format函数(字符串.format(value))
1.如果{}中没有具体的下标,会依次进行替换value值
例:print('我叫{},今年{}岁!'.format('小红', 23)) # 我叫小红,今年23岁!
2.如果{}中设置了具体下标,则会按要求进行替换
例:print('我叫{1},今年{0}岁!'.format(12, '小红', 23)) # 我叫小红,今年12岁!
3.可以设置具体关键字进行替换value值
例:print('我是{name},{sex},今年{age}岁!'.format(sex='男', name='强子', age=27)) # 我是强子,男,今年27岁!
4.使用**传递字典作为关键字传递
例:dict0 = {'name': '修勾', 'sex': '女', 'age': 24}
5.模板字符串 %print('我叫{name:s},{sex:s},今年{age:d}'.format(**dict0)) # 我叫修勾,女,今年24
例:print(Template('我叫$name,今年$age').substitute({'name':'python','age':22})) # 我叫python,今年22
6.f 万金油用法:f"{变量}",可以面向对象,字典等
例:dict1 = {'name': '小脑斧', 'sex': '女', 'age': 21}
6. 三引号print(f"我叫{dict1['name']},{dict1['sex']},今年{dict1['age']}") # 我叫小脑斧,女,今年21
三引号,允许字符串跨行,包含特殊字符,单引号和双引号都可以
para_str = '''这是一个多行字符串的实例
7. 常用的字符串函数多行字符串可以使用制表符 TAB ( \t )。 也可以使用换行符 [ \n ]。 '''
字符串常用函数
1.capitalize() 将字符串第一个字母换为大写
2.center(width,fillchar) 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
3.count(str,初始范围值,结束范围值) 返回 str 在指定字符串里面出现的次数
4.endswith(str,初始范围值,结束范围值) 检查字符串是否以 obj 结束,是返回true,否则false
5.find(str,初始范围值,结束范围值) 检查str是否在指定的字符串范围内,如果包含返回开始的索引值,否则返回-1
6.index(str,初始范围值,结束范围值) 语法跟find一样,但是它会在不匹配的时候返回一个错误信息
7.isalnum() 用来筛选都是字母或者数字的字符串
8.isalpha() 用来筛选都是字母或者中文的字符串
9.isdigit() 用来筛选只包含数字的字符串
10.islower() 用来筛选都是小写字母的字符串
11.isupper() 用来筛选都是大写字母的字符串
12.join(seq) 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
13.len(str) 返回字符串长度
14.lower() 转换字符串中所有的大写字母为小写字母
15.upper() 转换字符串中所有的小写字母为大写字母
16.lstrip() 截掉字符串左边的空格或者指定字符串(有参数时)
17.max(str) 返回字符串中最大的字符
18.min(str) 返回字符串中最小的字符
//代码效果参考:http://www.zidongmutanji.com/bxxx/242540.html
20.replace(old,new) 字符串替换
21.rfind(str) 类似于find,但是是从右边开始查找
22.rindex(str)类似于index,但是是从右边开始查找
23.ljust(width,fillchar) 左填充,没有指定参数用空格填充
24.rjust(width,fillchar) 右填充,没有指定参数默认用空格填充
25.rstrip(char) 删除字符串末尾的空格或指定字符
26.split() 将字符串以参数为分隔符进行截取
27.strip() lstrip和rstrip的和写,移除字符串首尾的空格或指定字符串
28.swapcase() 将字符串的大写转为小写,小写转为大写
29.titl() 返回标题化字符串,即所有单词首字母为大写,其余为小写