链式赋值用于同一个对象赋值给多个变量
x = y = 123
# 相当于 x = 123, y = 123
print(x) #123
print(y) #123
系列数据赋值给对应相同个数的变量(个数必须保持一致)
a,b,c =4,5,6
# 相当于 a=4, b=5,c=6
print(a) #4
print(b) #5
print(c) #6
使用系列解包赋值实现变量互换
a,b = 10,20
a,b=b,a
print(a) #20
print(b) #10
python不支持常量,即没有语法规则限制改变一个常量的值
python中最基本的内置数据类型
运算符 | 说明 | 示例 | 结果 |
---|---|---|---|
+ | 加法 | 3+2 | 5 |
- | 减法 | 30-5 | 25 |
* | 乘法 | 3*6 | 18 |
/ | 浮点数除法 | 9/2 | 4.5 |
// | 整数除法 | 7//2 | 3 |
% | 模 | 7%4 | 3 |
** | 幂 | 2**3 | 8 |
#同时获得商和余数,返回的是一个元组
print(divmod(7,2))
#(3, 1)
python中,除10进制,还有其他三种进制
0b或0B,二进制 0 1
0o或0O,八进制 0 1 2 3 4 5 6 7
0x或0X, 十六进制 0 1 2 3 4 5 6 7 8 9 a b c d e f
使用int()实现类型转换:
浮点数直接舍去小数部分
布尔值True转为1,False为0
字符串符合整数格式则直接转成对应整数
进制转换
print(bin(21)) #0b10101 十进制转二进制
print(int('0b10101',2)) #21 二进制转十进制
整数和浮点数混合运算是,表达式结果自动转型成浮点数
print(2+8.0) #10.0
类型转换和四舍五入
print(float(3)) #3.0
#3.0为一个新生成的对象
print(float('3.14')) #3.14
print(round(3.14)) #3
print(round(4.56)) #5
print(round(3.143242,2)) #3.14 可以指定保留小数的位数
True和False为关键字,但他们的本质还是1和0,甚至可以和数字相加
a = True
b = 3
print(a+b) #4
运算符 | 格式 | 说明 |
---|---|---|
or | x or y | x为 Ture, 则不计算y, 直接返回True; x为Flase, 则返回y |
and | x and y | x 为True, 则返回y; x 为False, 则不计算y, 直接返回False |
not | not x | x 为Ture, 返回False; x为False,返回True |
同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址
运算符 | 描述 |
---|---|
is | is 是判断两个标识符是不是引用同一个对象 |
is not | is not 是判断两个标识符是不是引用不同对象 |
可以使用+将多个字符串拼接起来
可以将多个字面字符串直接放到一起实现拼接
c= 'aa' 'bb'
print(c) #aabb
#'aa'和'bb'之间有无空格均可
a = str(5.20)
print(a,type(a)) #5.2
正向搜索:最左侧第一个字符,索引为0;最左侧第二个字符,索引为1;直到len(str)-1
反向搜索:最右侧第一个字符,索引为-1;最右侧第二个,索引为-2;直到-len(str)
a = 'abcdefghijk'
print(a[1]) #b
print(a[-2]) #j
字符串是不可变的,只能通过replace()重新生成一个新的字符串
a = 'abcdefghijk'
a = a.replace('k','mmmm') #生成新的字符串,并重新赋值给变量a
print(a)
#abcdefghigmmmm
快速的提取子字符串,标准格式为:
[起始索引:终止索引:步长],顾头不顾尾
操作和说明 | 示例 | 结果 |
---|---|---|
[: ] 提取整个字符串 |
‘abcdef’ [:] | ‘abcdef’ |
[start: ] 从start索引开始到结尾 |
‘abcdef’ [2:] | ‘cdef’ |
[:end ] 从头开始到end-1 |
‘abcdef’ [:2] | ‘ab’ |
[start:end ] 从start开始到end-1 |
‘abcdef’ [2:4] | ‘cd’ |
[start:end:step ] 从start提取到end-1,步长是step |
‘abcdef’ [1:5:2] | ‘bd’ |
示例 | 说明 | 结果 |
---|---|---|
‘abcdefghijk’[-3:] | 从倒数第三个取到最后 | ‘ijk’ |
‘abcdefghijk’[-8,-3] | 倒数第八个到倒数第三个(不含倒数第三个),顾头不顾尾 | ‘defgh’ |
‘abcdefghijk’[::-1] | 步长为负,从右往左反向提取 | ‘kjihgfedcba’ |
终止索引 > len(str) ,会被当作[起始索引:],取到最后
a = 'abcdefghijk'
a = a[:30] #abcdefghijk
split()基于指定分隔符将原字符串分割成多个字符串(存储在列表中),如果不指定分隔符,则默认使用空白字符(换行符,空格,制表符)。
pya = 'to be or not to be'
b = a.split('to') #jk
print(b) #['', ' be or not ', ' be']
join()的作用和split()作用刚好相反,用于将一些列子字符串连接起来
join()通常与列表联合起来使用
a = ['', ' be or not ', ' be']
b = '#'.join(a)
print(b)
字符串驻留:仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。
python支持字符串驻留机制,对于符合标识符规则的字符串(字符、字母、中文和数字组成的字符串)会启用字符串驻留机制。
a = 'abc_123_中国#$%@^)('
b = 'abc_123_中国#$%@^)('
print(a is b) #True
a=‘今天我们学习字符串我们’
方法和示例 | 说明 | 结果 |
---|---|---|
len(a) | 字符串长度 | 11 |
a.startswith(‘我是’) | 以指定字符串开头 | True |
a.endswith(‘字符串’) | 以指定字符串结尾 | False |
a.find(‘我们’) | 第一次出现指定字符串的位置 | 2 |
a.rfind(‘我们’) | 最后一次出现指定字符串的位置 | 9 |
a.count(‘我们’) | 指定字符串出现了几次 | 2 |
a.isalnum() | 所有字符全是字母、中文或数字 | True |
去除首尾信息
默认去除空白字符(换行符,空格,制表符)
a = " \n \t今天我们学习字符串我们 \t"
print(a.strip())
#今天我们学习字符串我们
a = '**今天我们学习字符串我们**'
print(a.strip('*'))
#今天我们学习字符串我们
a = '**今天我们学习字符串我们**'
print(a.lstrip('*'))
# 今天我们学习字符串我们**
a = ‘tom is a DOG’
示例 | 说明 | 结果 |
---|---|---|
a.capitalize() | 产生新的字符串,首字母大写 | Tom is a dog |
a.title() | 产生新的字符串, 每个单词首字母大写 | Tom Is A Dog |
a.upper() | 产生新的字符串,所有字母全转成大写 | TOM IS A DOG |
a.lower() | 产生新的字符串,所有字母全转成小写 | tom is a dog |
a.swapcase() | 产生新的字符串,所有字母大小写转换 | TOM IS A dog |
center()、ljust()、rjusr()
a = 'sxt'
print(a.center(10,'*'))# ***sxt****
print(a.ljust(10,'*')) # sxt*******
print(a.rjust(10,'*')) #*******sxt
isalnum() 是否为字母、中文或数字
isalpha() 是否为字母(含中文)
isdigit() 是否全部由数字组成
isupper() 是否全部为大写
islower() 是否全部为小写
isspace() 是都全部为空格
%d 表示格式化整数
%s 表示格式化字符串
a = '{0} is a good {1}'.format('CICI','cat')
print(a)
a = '{0} is a good {content}'.format('CICI',content='cat')
print(a) #关键字参数一定要在位置参数后
content = 'CAT'
name = 'CICI'
a = f'{name} is a good {content}'
print(a)
content = 'CAT'
name = 'CICI'
a = '%s is a good %s'%(name,content)
print(a)
在替换域中,冒号表示格式化符号的开始
e.g. 小数的表示
.2 表示四舍五入到保留两位小数
f 表示浮点数
num = 3.1415926
a = '我喜欢的数字是{:.2f}'.format(num)
print(a) # 我喜欢的数字是**3.14**
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
标准格式----> (冒号) : 填充字符 对齐方式 宽度
name = 'alex'
num = 3.14
a = '我是{0},我喜欢的数字是{1:*^8}'.format(name,num)
print(a) # 我是alex,我喜欢的数字是**3.14**
name = 'alex'
num = 3.14
a = '我是{0},我喜欢的数字是{n:*^8}'.format(name,n=num)
print(a) # 我是alex,我喜欢的数字是**3.14**