布尔值:
Python3中,把True和False定义成关键字,本质上还是1和0
一些特殊的布尔类型值为False,如False,0,0.0,空值None,空列表对象,空range对象,空迭代对象。其他情况,均为True。 Print(‘False’) #True
运算符:逻辑运算符,位运算符,比较运算符
逻辑运算符:and,or,not
运算符 | 格式 | 说明 |
or 逻辑或 | x or y | x为true,则不计算y,直接返回true;x为false,则返回y |
and 逻辑与 | x and y | x为true,则返回y的值x为false,则不计算y,直接返回false |
not 逻辑非 | not x | x为true,返回false;x为false,返回true |
#测试逻辑运算符
a,b,c=10, 20, 30
print((a<b) and(b<c)) #and并且输出结果是True
print((a>b) or(b>c)) #or或者输出结果是False
print(not(b<c)) #not非输出结果是False
比较运算符:
所有运算符返回1表示真,返回0表示假,这与特殊变量True和False等价
以下假设变量a为15,变量b为30∶
运算符 | 描述 | 实例 |
== | 等于-比较对象的值是否相等 | (a==b)返回False |
!= | 不等于-比较两个对象的值是否不相等 | (a!=b)返回true |
> | 大于-返回x是否大于y | (a>b)返回False |
< | 小于-返回x是否小于y | (a<b)返回true |
>= | 大于等于-返回x是否大于等于y | (a>=b)返回False |
<= | 小于等于-返回x是否小于等于y | (a<=b)返回true |
a=4
print(a<=30)
#关系运算符可以连用
if(3<a<10):
print("a在3和10之间”)
位运算符:位运算符是把数字看做二进制来计算的
运算符 | 描述 |
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 |
| | 按位或运算符:只要对应的二个二进位有一个为1时,结果为就为1. |
^ | 按位异或运算符:当两对应的二进制位相异时,结果为1 |
~ | 按位取反运算符:对数据的每个二进制取反,既把1变为0,把0变为1,~x类似于- x-1 |
<< | 左移动运算符:运算数的每个二进位全部左移若干位,由"<<"右边的数据指定移动的位数,高位丢弃,低位补0 |
>> | 右移动运算符:把">>"左边运算数的每个二进制位全部右移若干位,">>"右边的数指定移动的位数 |
a = 0b11001
b = 0b01000
print(bin(a | b)) # bin()可以将数字转成二进制表示 '0b11001'
print(bin(a & b)) # 与
print(bin(a ^ b)) # 异或
print(~b) # ~x相当于-x-1
print(3 << 2) # 左移一位相当于乘以2,左移两位相当于3*4
print(20 >> 1) # 右移一位相当于除以2
Python和c,java不一样,Python不支持自增(++)和自减(--)
同一运算符:用于比较两个对象的存储单元,实际上比较的是对象的地址
运算符 | 描述 |
is | is是判断两个标识符是不是引用同一个对象 |
is not | is not是判断两个标识符是不是引用不同对象 |
is与==的区别:
is用于判断两个变量引用对象是否为同一个,即比较对象的地址
==用于判断引用变量引用对象的值是否相等,默认调用对象的--eq--()方法
整数缓存模式:
命令行模式下,仅仅对小的数字进行缓存,范围为[-5,256],用数组实现,连续分配空间
文件模式下,所有数字都被缓存,缓存到链表中,不连续分配空间
成员运算符:测试实例中包含了一系列成员,包括字符串,列表和元组
运算符 | 描述 |
in | 如果能在指定的序列中找到值返回True,否则返回False |
not in | 不在,则返回True |
运算级优先级问题:复杂表达式实用小括号组织
位运算和算术运算>比较运算符>赋值运算符>逻辑运算符
字符串基本特点:
字符串的本质是字符序列
Python不支持单字符类型,单字符也是可以作为一个字符串使用的
字符串的编码,Python3默认的是16位的Unicode编码
使用内置函数ord()可以把字符转换成对应的Unicode码
使用内置函数chr()可以把十进制数字转换成对应的字符
引号创建字符串:
我们可以通过单引号和双引号创建字符串
可以创建本身就包含引号的字符串,不用使用转义字符
连续三个单引号和双引号可以创建多行字符串,会保留原来的格式
Python允许空字符串的存在,不包含任何字符且长度为0
len()用于计算字符串包含了多少字符
转义字符:
\t:横向制表符
\n:换行
\b:退格(backspace)
\r:回车
字符串拼接:可以使用+将多个字符串拼接起来
如果+两边都是字符串,则拼接
如果+两边都是数字,则加法运算
如果+两边类型不同,则抛出异常
可以将多个字面字符串直接放到一起实现拼接
字符串复制:使用*可以实现字符串复制
不换行打印:可以通过参数end=‘任意字符串’,实现末尾添加任何内容
Print(‘txt’,end=’ ‘)
Print(‘txt’,end=’##’)
Print(‘txt’)
>>>txt txt##txt
从控制台读取字符串:
我们可以使用input()从控制台读取键盘输入的内容
replace()实现字符串的替换:
a=’1234’
a=a.replace(‘1’,’一’)
print(a)
>>>一234 创建了新的字符串对象,并指向了变量a,而不是修改了之前的字符串
str()实现数字转型字符串
str()可以帮助我们把其它数据类型转换成字符串
当我们调用print()时,解释器自动调用了str()将非字符串的对象转成了字符串
使用[]提取字符:
字符串本质是字符序列,我们可以通过在字符串后面加[],在[]里面指定偏移量
正向搜索:
最左侧第一个字符,偏移量是0,第二个偏移量是1,直到len(str)-1为止
反向搜索:
最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,直到-len(str)为止
字符串切片slice操作:
[:]:提取整个字符串
[start:]:从start索引开始到结尾
[:end]:从头开始直到end-1
[start:enf]:从start到end-1
[start:end:step]:从start到end-1,步长是step
切片slice操作可以让我们快速提取子字符串,标准格式为:
[起始偏移量start:终止偏移量end:步长step]
split()分割和join()合并:
split()可以基于指定分隔符将字符串分割成多个字符串(存储到列表中),如果不指定分隔符,则默认使用空白字符
a='to be or not to be'
a=a.split()
>>>['to', 'be', 'or', 'not', 'to', 'be']
a=a.split(‘be’)
>>>['to ', ' or not to ', '']
join()的作用正好和split()相反,用于将一系列字符串连接起来
a=[‘1’,’2’,’3’]
a='*'.join(a)
print(a) >>>1*2*3
import time
time1=time.time()
a=''
for i in range(1000000):
a+='sx'
time2=time.time()
print('+连接的运算时间:'+str(time2-time1))
time3=time.time()
b=[]
for i in range(1000000):
b.append('sx')
b=''.join(b)
time4=time.time()
print('join连接的运算时间:'+str(time4-time3))
#+连接的运算时间:0.5150294303894043
#join连接的运算时间:0.2130124568939209
使用字符串拼接符+,会生成新的字符串对象,而join函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅仅建立一次对象,推荐使用join函数
字符串驻留机制和字符串比较:
字符串驻留:常量字符串只保留一份
c=’1#’
d=’1#’
print(c is d) #True
字符串比较和同一性:
可以直接使用==和!=对字符串进行比较,是否含有相同的字符
使用is和not is,判断两个对象是否为同一个对象,比较的是对象的地址,即id(object1)和id(object2)是否相等
成员操作符判断子字符串:
使用in和not in 关键字,判断某个字符(字符串)是否存在于字符串中
字符串常用方法:
常用查找方法:
a=’123456’
len():字符串长度 >>>6
a.startswith(‘1’):以指定字符串开头 >>> True
a.endswith(‘6’):以指定字符串结尾 >>> True
a.find(‘2’):第一次出现指定字符串的位置 >>>1
a.rfind(‘6’):最后一次出现指定字符串的位置 >>>5
a.count(‘2’):指定字符串出现了几次 >>>1
a.isalnum():所有字符串全是数字或字母 >>>True
去除首尾信息:
我们可以通过strip()去除字符串首尾指定信息,通过lstrip()去除字符串左边指定信息,rstrip()去除字符串右边指定信息
a='*1*2*3*'
a=a.strip('*')
print(a) #1*2*3
a=a.lstrip('*')
print(a) #1*2*3*
a=a.rstrip('*')
print(a) #*1*2*3
a=' *1*2*3* '
a=a.strip(' ')
print(a) #*1*2*3*
大小写转换
a=’gaoqi love programming,love SXT’
示例 说明 结果 |
a. capitalize () 首字母大写 'Gaoqi love programming , love sxt' |
a. title() 每个单词都首字母大写 ‘Gaoqi Love Programming , Love Sxt’ |
a. upper() 所有字符全转成大写 'GAOQI LOVEPROGRAMMING ,LOVE SXT' |
a. lower() 所有字符全转成小写 ˈgaοqii love programming , love sxt' |
a. swapcase() 所有字母大小写转换 ' GAOQlLOVEPROGRAMMING ,LOVE sxt' |
格式排版:
center(),ljust(),rjust()这三个函数用于对字符串进行排版
a='123'
a=a.center(10,'*')
print(a) >>>***123****
a=a.ljust(10,'*')
print(a) >>>123*******
a=a.rjust(10,'*')
print(a) >>>*******123
特征判断方法:
isalnum():是否为字母或数字
isalpha():检测字符串是否只由字母组成(含汉字)
isdigit():检测字符串是否只由数字组成
isspace():检测是否为空白符
isupper():检测是否为大写字母
islower():检测是否为小写字母