一.运算符
1、算数运算符
+ - * /
取余数 % 取商的整数部分 // 幂 **
2、比较运算符
== 不等于!= <> > < >= <=
3、赋值运算符
= += -= *= /= %= **= //=
a=b
a+=c a=a+c
a-=c a=a-c
a*=c a=a*c
a/=c a=a/c %= **= //=一样
4、逻辑运算符
and和or的运算等级一样,有括号先算括号内部的,再从左到右依次
与 and
或 or
非 not
5、成员运算符
in
not in
二.基本数据类型
1、数字(整形int,长整形,浮点型float,复数complex)
int float bool complex
16进制转换成10进制
num = "0011"
v = int(num, base=16)
print(v)
将10进制转换成2/8/16进制
二进制Binary bin() 八进制Octal oct() 十六进制Hexadecimal hex()
2、字节串 str 不可变元素,一旦修改会重新生成新的字符串
7个基本魔法:join split strip find upper lower replace
注意:len('asdf') for 索引 切片
age = 20
print(age.bit_length())
test = "aaa"
print(test.capitalize())
test = "AAA"
print(test.lower())
print(test.casefold())
test.lower() test.islower()
test.upper() test.isupper()
test = 'ALex'
print(test.swapcase())
test = 'alex'
print(test.center(10,'#'))
print(test.center(10,'*'))
print(test.ljust(10,'*'))
print(test.rjust(10,'*'))
test = 'alexalexalex'
print(test.count('a',0,2))
test = 'alexalexalex'
print(test.find('0')) #找不到报-1
print(test.index('l')) #找不到报错
test= 'alex'
print(test.endswith('xe'))
print(test.startswith('al'))
test = 'i am {name}, age {a}'
print('{} {} {}'.format('egon','18','male'))
print('{0} {1} {0}'.format('egon','18','male'))
print(test.format(name = 'alex',a = 18)) #赋值形式
print(test.format_map({'name':'alex','a':18})) #字典形式
test = 'alex111'
print(test.isalnum()) #字母数字
print(test.isalpha()) #字母汉子
test = '2'
print(test.isdecimal()) #最常用
print(test.isdigit())
print(test.isnumeric())
test = 'aaa111' #字母、数字和下换线,不能单纯数字
print(test.isidentifier())
# \t制表符 \n换行符
test = 'uertname\tpassword\temail\t\nlaiying\t123\tlai@qq.com'
print(test.expandtabs(10))
test = 'uertname\tpassword\temail\t\n'
print(test.isprintable()) #是否存在不可显示的字符
print(test.isspace())
test = 'alex alex alex'
print(test.istitle())
print(test.title())
# test = 'asdffgfghjkl'
# print(' '.join(test)) #字符串中的每个元素进行分割
# print('_'.join(test))
# test = ' alexalex '
# print(test.strip()) #去除字符串中的子序列,不填去除开头、结尾空白
v = 'alexlalellflfcmcjjss'
m1 = str.maketrans('al','12')
m2 = str.maketrans('ae','13')
print(v.translate(m1))
print(v.translate(m2))
test = 'alexalexalex'
print(test.replace('al','12'))
test = 'testabjdbdkjd'
print(test.split('j'))
test = 'test\nabjdbdk\njd'
print(test.splitlines(True)) #以换行符进行分割,并是否保留
print(test.splitlines(False))
test = 'testabjdbdkjd'
print(test[0],test[-1])
print(test[0:1])
print(test[::2])
for item in test:
print(item)
3、列表 list 元素可以被修改/删除 可变元素
列表中的元素可以是:数字、字符串、列表、布尔值。可以嵌套任何格式
基本魔法:append、extend copy、clear、pop、remove、del count、index、insert
reverse、sort、sorted
注意:切片、索引、for循环 列表和字符串相互转换
l = ['111','222','aaa']
print(' '.join(l)) #列表(元素均是字符串)转换成字符串
print(*l) #把列表中的内容取出来
li = [11,22,333,55]
li.append(66)
li.append([9898,[333,5555]]) #追加
li.extend([9898,[333,5555],'444']) #拓展
print(li)
li = [111,22,33]
li.clear()
v = li.pop(1) #默认最后位置,并获取删除的值
li.remove(111)
del li[1]
print(li,v)
print(li.copy())
print(li.count(22))
li = [11,22,33,44]
print(li.index(22))
li = [11,22,33,44]
li.insert(1,'haha') #插入元素
print(li)
li = [11,33,22,55,44]
li.reverse()
li.sort(reverse=False) #排序,升序
print(sorted(li,reverse=False))
print(li)
4、元组 tuple 元素不可被修改、增加、删除
注意:索引、切片、for循环、字符串和列表<=>元组
tu = ('11','22','33','44')
s = ''.join(tu) #元组中的元素全部是字符串
print(s)
print(*tu)
5、字典 dict 元素可以被修改、增加和删除 无序(不能索引下标,只能索引key)
键值对形式存在 dic = {'k1':v1,'k2':v2}
key可以是:数字、字符串、元组和布尔值,不能是列表和字典;value可以是任何值。
基本魔法:keys()、values()、items()、get()、update()
dic = {
'k1':1,
2:'3',
(11,22):[11,'22'],
True:{'K1':1,'K2':2}
}
del dic['k1']
print(dic)
v1 = dic.pop(2) #删除并获取字典的value
print(dic,v1,sep='\n')
k,v = dic.popitem() #随机删除,并获取删除的key和value
print(dic,k,v,sep='\n')
for item in dic:
print(item) #字典的key
for k,v in dic.items():
print(k,v)
for k in dic.keys(): #dic.keys()/dic.values()
print(k)
for v in dic.values():
print(v)
for i,j in enumerate(dic): #i序号,j字典的key
print(i,j)
k = ['11',22,33]
v1 = 123
dic1 = dict.fromkeys(k,v1) #创建字典,并指定统一的值,没有值默认None
v2 = ['a','b']
dic2 = dict.fromkeys(k,v2)
print(dic1,dic2)
#get和setdefault用法一样
dic = {'k1':'v1','k2':2}
print(dic.get('k1')) #存在,获取value值
print(dic.get('kkkkk')) #不存在,不设默认值,输出None
print(dic.get('kkkkk','不存在')) #不存在,设置默认值,输出默认值
print(dic.setdefault('k1'))
print(dic.setdefault('kkkkk'))
print(dic.setdefault('kkkkk','不存在'))
dic = {'k1':'v1','k2':2}
dic.update({'k3':'v3','k4':4}) #字典形式
dic.update(k3='v3',k4=4) #赋值形式
print(dic)
6、集合 {}
不同元素组成的集合,集合中是一组无序排列的可hash值,可以作为字典的key
条件:不同元素组成、无序、集合中的元素必须是不可变类型
可变集合set() 能够增删不能修改
不可变集合frozenset() 不能增删和修改
基本魔法:copy、clear、pop、remove、discard update、add isdisjoint、issubset
交集:intersection &、并集:union |、差集:difference -、交叉补集:symmetric_difference
s = {'aaa',22,333,555}
v = s.copy()
print(v)
s.clear()
s.pop() #随机删除
s.remove(22) #移除,不存在报错
s.discard(555)
s.discard(222) #移除,不存才,不报错
print(s)
l_s = {'szw', 'lcg', 'sdd'}
print(p_s.intersection(l_s)) #交集
print(p_s&l_s)
print(p_s.union(l_s)) #并集
print(p_s|l_s)
print(p_s.difference(l_s)) #差集
print(p_s-l_s)
p_s.difference_update(l_s)
print(p_s)
print(p_s.symmetric_difference(l_s))#交叉补集
print(p_s^l_s)
p_s = {'szw', 'lcg', 'zjw'}
l_s = {'szw', 'lcg', 'sdd'}
print(p_s.isdisjoint(l_s)) #两个集合的交集为空则返回True
print(p_s.issubset(l_s)) #p_s是否为l_s的子集
s1 = {11,22}
s2 = {33,44}
# s1.update(s2) #放可迭代对象
s1.update([33,44])
s1.add(55) #可hash类型
s1.add((55,66))
print(s1)