变量命名规范
name = 'wanglan' #name 为变量
print(name)
1. 变量由数字,字母,下划线组成 2. 变量不能以数字开头 3. 禁止使用python中关键字 4. 变量名要有意义 5. 不能使用中文和拼音 6. 变量名区分大小写 (大写为常量) 7. 推荐写法: 1.驼峰体 1.1 大驼峰 WangLan 1.2 小驼峰 wANGlAN 2. 下划线 :wang_lan
注释
# :当行注释(单行注释) ''' ''' 或 """ """ # 多行注释
int:整型
用于计算和比较
str:字符串
python中只要使用引号引起来的都是字符串
' ' " " ''' ''' """ """
字符串拼接
a = 'wang' b = 'lan' print(a+b) 结果: wanglan
字符串和数字相乘
a = 'wang' print(a * 5) 结果: wangwangwangwangwang
字符串操作
title : 每个单词首字母大写
name = 'wang lan' n = name.title() print(n) 结果: Wang Lan
capitalize : 字符的首字母大写
name = 'wang lan' n = name.capitalize() print(n) 结果: Wang lan
upper : 全部大写
name = 'wang lan' n = name.upper() print(n) 结果: WANG LAN
lower : 全部小写
name = 'WANG LAN' n = name.lower() print(n) 结果: wang lan
count : 计数 统计
name = 'wang lan' n = name.count('a') #统计a 出现的次数 print(n) 结果: 2
find / index: 查找索引位置
name = 'wang lan' n = name.find('n') #找到就返回,返回的索引位置,不会在继续寻找 print(n) 结果: 2 name = 'wang lan' n = name.find('f') #查找f的索引 print(n) 结果: -1 #找不到返回-1 name = 'wang lan' n = name.index('n') #和find方法一样 print(n) 结果: 2 name = 'wang lan' n = name.index('f') print(n) 结果: #但是index找不到就保错 n = name.index('f') ValueError: substring not found
center : 居中
name = 'wanglan' print(name.center(20)) #总长度为20 字符串居中 结果: wanglan name = 'wanglan' print(name.center(20,'*')) #字符串居中,空白以*填充 结果: ******wanglan*******
split : 分割 (可以将字符串转化为列表)
name = 'wang lan' print(name.split()) #默认为空格,结果是列表 结果: ['wang', 'lan'] name = 'wanglan' print(name.split('l')) #以l分割,分割后不含有分割符,也就是 l 结果: ['wang', 'an']
strip : 去除空格
name = ' wanglan ' #字符串和引号中间是有空格的 print(name.strip()) #默认脱头尾两边的空格和换行符 结果: wanglan name = 'qqwanglanqq' print(name.strip('q')) 结果: wanglan
join : 指定字符拼接
name = 'wanglan' print('_'.join(name)) 结果: w_a_n_g_l_a_n #一行代码把列表转换成字符串 name = ['wanglan]' print(''.join(name)) print(type(name)) #查看数据类型 结果: wanglan <class 'list'>
replace :替换
name = 'wanglan' print(name.replace('n','N')) #将小写的n替换成大写的N 结果: waNglaN #去掉字符串内的空格 name = 'w a n g l a n' print(name.replace(' ',''))# 将空格替换为空 结果: wanglan
startswith : 以什么开头
name = 'wanglan' print(name.startswith('w')) #如果是返回True print(name.startswith('f')) #如果不是返回False 结果: True False
endswith : 以什么结尾
name = 'wanglan' print(name.endswith('n')) #如果是就返回Ture print(name.endswith('f')) #如果不是就返回False 结果: Ture False
format :格式化
name = '{}a{}glan' s = name.format('w','n') print(s) 结果: wanglan name = '{1}a{0}glan' s = name.format('w','n') print(s) 结果: nawglan
isalnum : 判断是否数字和字母
name = 'wanglan123' #既可以是纯数字也可以是纯字母 print(name.isalnum()) 结果: Ture
isalpha:判断是否为纯字母
name = 'wanglan' print(name.isalpha()) 结果:Ture name = 'wanglan1' print(name.isalpha()) 结果: False
isdigit :判断是否为出数字
name = '1234' print(name.isdigit()) 结果: Ture name = 'wanglna' print(name.isdigit()) 结果: False
其他
name = 'anglna' print(name.islower()) #是否全部小写 print(name.isupper()) #是否全部大写 print(name.istitle()) #开头是否大写
字符串切片
name = 'wanglan' #取值 #0123456 :索引位置 print(name[1]) 结果: a name = 'wanglan' print(name[0:3]) #[起始位置:终止位置],顾头不顾尾 结果: wan name = 'wanglan' print(name[:5:2]) #[起始位置:终止位置:步长](方向),默认为1 结果: wnl name = 'wanglan' print(name[-1:-5:-1]) #反向取值 结果: nalg
bool(布尔值)
True :真 1
False :假 0
列表
lsit 列表 [ ] 列表是可变的
定义一个列表
lst = ['wang','lan','1','2','3']
列表的操作
增
append :追加
lst = ['wang','lan','1','2','3'] lst.append(4) print(lst) 结果: ['wang', 'lan', '1', '2', '3', 4]
insert :插入
lst = ['wang','lan','1','2','3'] lst.insert(2,'wl') #第一个参数2(索引) 插入的位置,'wl'插入的内容 print(lst) 结果: ['wang', 'lan', 'wl', '1', '2', '3']
entend : 迭代天剑
lst = ['wang','lan','1','2','3'] lst1 = [5,6,7,8] lst.extend(lst1) print(lst) 结果: ['wang', 'lan', '1', '2', '3', 5, 6, 7, 8]
删
remove :通过元素进行删除,删除指定的元素
lst = ['wang','lan','1','2','3'] lst.remove('wang') #移除 print(lst) 结果: ['lan', '1', '2', '3']
pop :默认删除最后一个,pop有返回值,就是被删除的元素
lst = ['wang','lan','1','2','3'] lst.pop() #默认删除最后一个 print(lst) 结果: ['wang', 'lan', '1', '2'] lst = ['wang','lan','1','2','3'] lst.pop(1) #通过元素的下标来删除 print(lst) 结果: ['wang', '1', '2', '3']
lst = ['wang','lan'] l = lst.pop(0) print(l) 结果: wang
clear :清空
lst = ['wang','lan','1','2','3'] lst.clear() print(lst) 结果: []
del : 删除列表
lst = ['wang','lan','1','2','3'] del lst print(lst) 结果: NameError: name 'lst' is not defined lst = ['wang','lan','1','2','3'] del lst[0] #同过索引删除 print(lst) 结果: ['lan', '1', '2', '3']
改
lst = ['wang','lan','1','2','3'] lst[0] ='wl' #通过索引修改 print(lst) 结果: ['wl', 'lan', '1', '2', '3'] lst = ['wang','lan','1','2','3'] lst[:2] ='wl','wl1','wl2' #范围修改 print(lst) 结果: ['wl', 'wl1', 'wl2', '1', '2', '3']
查
lst = ['wang','lan','1','2','3'] print(lst[3]) 结果: 1
其他操作
count : 统计
lst = [1,2,3,4,5,6,7,8,9,9,8,7,6,5,4,3,2,1] print(lst.count(4)) #统计4出现的次数 结果: 2
index :查找索引
lst = [1,2,3,4,5,6,7,8,9,9,8,7,6,5,4,3,2,1] print(lst.index(4)) #查找元素的下标 结果: 3
reverse :翻转
lst = [1,2,3,4,5,6,7,8,9] lst.reverse() print(lst) 结果: [9, 8, 7, 6, 5, 4, 3, 2, 1]
sort :排序
lst = [1,3,5,7,9,2,4,6,8] lst.sort() print(lst)
lst = [1,3,5,7,9,2,4,6,8] lst.sort(reverse=True) print(lst) 结果: [9, 8, 7, 6, 5, 4, 3, 2, 1]
copy:拷贝
lst = [1,3,5,7,9,2,4,6,8] lst1 = lst.copy() print(lst1) 结果: [1, 3, 5, 7, 9, 2, 4, 6, 8]
lst = [1,2,3,4,5] for i in range(len(lst)): lst.pop() print(lst) []
列表嵌套
lst = [1,2,3,4,5,[6,7,8,9]] print(lst[0]) print(lst[5]) print(lst[5][2]) 结果: 1 [6, 7, 8, 9] 8 lst = ['wang','lan',['w']] lst[2].append('wanglan') print(lst) 结果: ['wang', 'lan', ['w', 'wanglan']]
元组
tuple :元组 ( )
定义一个元组
tu = (1) #括号里如果只有一个类型就是此类型 print(type(tu)) 结果: <class 'int'> tu1 = (1,) #括号里有逗号就时元组 print(type(tu1)) 结果: <class 'tuple'>
元组的操作
index :查找索引
tu = (1,2,3,4) print(tu.index(2)) 1
count :统计
tu = (1,2,3,4,3,2,2) print(tu.count(2)) 结果: 3
元组内的内容不可修改,但是可以切片和for循环
tu = (1,2,3,4,3,2,2) print(tu[:2]) 结果: 0 1 tu = (1,2,3,4,3,2,2) for i in tu: print(i) 结果: 1 2 3 4 3 2 2
s = {1,2,3,4,5,6,} s.update("wang") print(s) {1, 2, 3, 4, 5, 6, 'n', 'w', 'a', 'g'}
s = {1,2,3,4,5,6,} s.clear() print(s) set()
字典
dict 字典 { }
键值对 {键:值}
dic = {'wang':'lan',1:'wl','True':2,(1,2):3} #键必须是不可变的 print(dic) 结果: {'wang': 'lan', 1: 'wl', 'True': 2, (1, 2): 3}
取值
dic = {'wang':'lan',1:'wl','True':2,(1,2):3} for i in dic: print(i) 结果: 打印的是字典的键 wang 1 True (1, 2)
字典的操作
增
dic = {'name':'wanglan'} #键不存在就添加 dic['age']= 18 print(dic) 结果: {'name': 'wanglan', 'age': 18} dic = {'name':'wanglan'} #键存在就修改 dic['name']= 'wl' print(dic) 结果: {'name': 'wl'}
setdefault :存在就不进行添加,不存在就添加
dic = {'name':'wanglan'} dic.setdefault('name','wl') print(dic) 结果: {'name': 'wanglan'} #存在就不添加,也不会修改 dic.setdefault('age',18) print(dic) 结果: {'name': 'wanglan', 'age': 18} #不存在就天加
删
pop :通过键来删除
dic = {'name':'wanglan','age':18} d = dic.pop('age') #pop必须给值,值为字典的键,pop有返回值 print(dic) print(d) 结果: {'name': 'wanglan'} 18 #被删除键的值
popitem :随机删除,在python3.6中删除最后一个,python3.5及以下随机删除
dic = {'name':'wanglan','age':18} dic.popitem() #popitem返回的是被删除的键和值,以元组的形式显示,元组中第一个是键,第二个是值
del :删除字典
del dic #删除整个字典 dic = {'name':'wanglan','age':18} del dic['name'] #通过键来删除 print(dic)
clear:清空字典
dic = {'name':'wanglan','age':18} dic.clear() print(dic) 结果: {}
改
直接改
dic = {'name':'wanglan','age':18} dic['name'] = 'wl' print(dic) 结果: {'name': 'wl', 'age': 18}
update :没有就添加,有就修改
dic = {'name':'wanglan'} dic.update({'age':18}) print(dic) 结果: {'name': 'wanglan', 'age': 18}
dic = {'name':'wanglan'} dic1 = {'age':18} dic.update(dic1) print(dic) 结果: {'name': 'wanglan', 'age': 18}
查
get
dic = {'name':'wanglan'} print(dic.get('name')) #通过键来查找 print(dic.get('age')) #如果没有找到,默认返回None print(dic.get('age','没有找到')) #如果没有找到,可以自定义返回值 结果: wanglan None 没有找到
dic = {'name':'wanglan'} print(dic['age']) #如果没有找到会报错 结果: KeyError: 'age'
其他操作
dic = {'name':'wanglan','age':18} for i in dic: print(i) 结果: name age
dic = {'name':'wanglan','age':18} for i in dic: print(dic[i])
dic = {'name':'wanglan','age':18} for i in dic: print(dic.get(i)) 结果: wanglan 18
dic = {'name':'wanglan','age':18} for i in dic: print(i,dic.get(i)) 结果: name wanglan age 18
dic = {'name':'wanglan','age':18} for i in dic.keys(): print(i) 结果: name age
dic = {'name':'wanglan','age':18} for i in dic.values(): print(i) 结果: wanglan 18
dic = {'name':'wanglan','age':18} for i in dic.items(): print(i) 结果: ('name', 'wanglan') ('age', 18)
dic = {'name':'wanglan','age':18} for k,v in dic.items(): print(k,v) 结果: name wanglan age 18
lst = {} dic ={'a':1,'b':2} for i in dic: lst[i]= dic[i] for i in lst: dic.pop(i) print(dic)
dic = dict.fromkeys(['alex','wusir','wenzhou','nvshen','kaige'],['太白','姗姗']) # fromkeys 第一是键 第二是值 逐一将值赋予给键 print(dic) dic['alex'].append('老村长') 在其中一个键中添加一个值,其他键中的值也会增加 print(dic) {'alex': ['太白', '姗姗'], 'wusir': ['太白', '姗姗'], 'wenzhou': ['太白', '姗姗'], 'nvshen': ['太白', '姗姗'], 'kaige': ['太白', '姗姗']} {'alex': ['太白', '姗姗', '老村长'], 'wusir': ['太白', '姗姗', '老村长'], 'wenzhou': ['太白', '姗姗', '老村长'], 'nvshen': ['太白', '姗姗', '老村长'], 'kaige': ['太白', '姗姗', '老村长']}
嵌套
av_catalog = { '欧美':{ 'www.youporn.com':['很多免费的,世界最大','质量一般'], 'www.pornhub.com':['很多免费的,很大','质量比youpirn高点'], 'letmedothistoyou.com':['多事自拍,高质量图片很多','资源不多,更新慢'], 'x-art.com':['质量很高,真的很高','全部收费,屌丝请绕行'] }, '日韩':{ 'tokyo':['质量很高,个人已经不喜欢日韩范了','听说是收费的'] }, '大陆':{ '1024':['全部免费,好人一生平安','服务器在国外,慢'] } } av_catalog['欧美']['www.youporn.com'][1] = '高高清清' #修改指定的值,首先找到大的字典里的键,然后在找到资格字典里套的这个字典的键,然后在找到要修改的这个内容在列表的位置。 #找到日韩 print(av_catalog['日韩']) #找到欧美的www.pornhub.com print(av_catalog['欧美']['www.pornhub.com']) #找到欧美的www.pornhub.com中的 很多免费的,很大 print(av_catalog['欧美']['www.pornhub.com'][0])
解构
a = 10 b = 20 a,b = b,a print(a) #20 print(b) #10 结果: 20 10
a,b = (1,2) print(a) print(b) 结果: 1 2
a,b = [1,2] print(a,b) 结果: 1 2
a,b = '您好' print(a,b) 结果: 您 好
集合
set { }
s = {} print(type(s)) <class 'dict'>
定义一个集合
s = {1,2,3,4,5}
集合可以是如下内容
s = {1,2,3,'22','ss',False,(3,4)}
集合自带去重功能
s = {1,2,3,4,5,6,3,4,1} print(s) {1, 2, 3, 4, 5, 6}
集合操作
增
s = {1,2,3,4,5,6,} s.add(7) print(s) 结果: {1, 2, 3, 4, 5, 6, 7}
删
随机删除
s = {1,2,3,4,5,6,} s1 = s.pop() 返回值,返回的被删除的元素 print(s) print(s1) 结果: {2, 3, 4, 5, 6} 1
删除整个集合
s = {1,2,3,4,5,6,} del s print(s) NameError: name 's' is not defined
通过元素指定删除
s = {1,2,3,4,5,6,} s.remove(2) print(s) 结果: {1, 3, 4, 5, 6}
改
先删除,后添加
s = {1,2,3,4,5,6,} s.remove(2) s.add(7) print(s) {1, 3, 4, 5, 6, 7}
查
for 循环
s = {1,2,3,4,5,6,} for i in s: print(i) 1 2 3 4 5 6
面试题
将列表去重
lst = [1,2,3,42,3,45,67,534,2] lst1 = set(lst) 将列表转换为集合进行去重 lst = list(lst1) 将得到的集合转换为列表 print(lst) [1, 2, 3, 67, 42, 45, 534] 写到一起 lst = [1,2,3,42,3,45,67,534,2] print(list(set(lst)))
其他操作
s = {"黑哥"} s1 = {'虎哥','开哥','alex哥','黑哥','wu哥'} print(s & s1) # 交集 俩个集合都有的才输出 print(s | s1) # 并集 两个集合 合并到一起 print(s1 - s) # 差集 前面减后边的集合前边集合中有的输出出来 自己总结 print(s ^ s1) # 反交集 输出不一样的 print(s < s1) # 子集 print(s1 > s) # 超(父)集
冻结结合
dic = {{1,2,3}:1} 集合不能作为键 a = frozenset((1,2,3)) 同过frozenset将元组冻结 dic ={a:1} 元组就可以作为键了 print(dic) print(dic)
深浅拷贝
浅拷贝
lst = [1,2,3,[4,5,6],7] lst1 = lst #赋值 lst2 = lst[:] # 切片 切片等于浅拷贝 lst.append(7) print(lst) print(lst2) [1, 2, 3, [4, 5, 6], 7, 7] [1, 2, 3, [4, 5, 6], 7]
深拷贝
import copy lst = [1,2,3,[4,5,6],7] st4 = copy.deepcopy(lst) # 深拷贝 lst[-2].append(7) print(lst) # [1, 2, 3, [4, 5, 6,7], 7] print(lst4) #[1, 2, 3, [4, 5, 6], 7]
面试题
a = [1, 2] a[1] = a # [1,[1,2]] print(a[1]) 答案: [1, [...]]
编码
ascii # 不支持中文
unicode 万国码 中文4个字节 英文 2个
utf-8 最少使用1个字节 欧洲 2 亚洲 3
gbk 中文 2 英 1
Windows 默认编码GBK
a = '你好黑' a1 = 'alex' a2 = a.encode('utf-8') #编码 print(a) print(a2) a3 = a2.decode('utf-8') #解码 print(a3) bytes字节 用于传输和存储 a = '你好黑' a1 = 'alex' a2 = a.encode('gbk') #编码 a3 = a.encode('utf-8') # 最长用 print(a2) print(a3) a4 = a2.decode('gbk') #解码 a5 = a3.decode('utf-8') print(a4,a5)
小数据池
数字的范围 -5 ~ 256 字符串 : 乘法的总数长度不能超过20个,0和1除外 不能有特殊字符 a = '@'*2 b = '@'*2 print(a is b) a = 'asfasdfas@aasdfasdf' b = 'asfasdfas@aasdfasdf' print(a is b) #查看是不是一个
程序交互
input: 输入
input 获取到的内容都是字符型类型的
age = input('输入数字:') print(type(age)) #type:查看数据类型 结果: 输入数字:1 <class 'str'> #字符串类型
输入内容不显示(必须在交互模式中)
import getpass user = input('输入账号:') pwd = getpass.getpass('输入密码:')
格式化输出
%s:字符串(通用) %d和%i:数字
print('name:%s age:%s' %('wanglan',18)) 结果: name:wanglan age:18
format
print('name:{} age:{}' .format('wanglan',18)) 结果: name:wanglan age:18 print('name:{1} age:{0}' .format('wanglan',18)) 结果: name:18 age:wanglan
f
name = input('姓名:') age = input('年龄:') print(f'姓名:{name} 年龄:{age}') 结果: 姓名:wanglan 年龄:18 姓名:wanglan 年龄:18