基础数据类型

变量命名规范

name = 'wanglan'  #name 为变量
print(name)

1. 变量由数字,字母,下划线组成
2. 变量不能以数字开头
3. 禁止使用python中关键字
4. 变量名要有意义
5. 不能使用中文和拼音
6. 变量名区分大小写 (大写为常量)
7. 推荐写法:
    1.驼峰体
            1.1 大驼峰  WangLan
            1.2 小驼峰  wANGlAN
    2. 下划线 :wang_lan
View Code

注释

# :当行注释(单行注释)
''' '''"""  """  # 多行注释

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
View Code

capitalize : 字符的首字母大写

name = 'wang lan'
n = name.capitalize()
print(n)
结果:
Wang lan
View Code

upper : 全部大写

name = 'wang lan'
n = name.upper()
print(n)
结果:
WANG LAN
View Code

lower : 全部小写

name = 'WANG LAN'
n = name.lower()
print(n)
结果:
wang lan
View Code

count : 计数 统计

name = 'wang lan'
n = name.count('a') #统计a 出现的次数
print(n)
结果:
2
View Code

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
View Code

center : 居中

name = 'wanglan'
print(name.center(20)) #总长度为20 字符串居中
结果:
      wanglan       


name = 'wanglan'
print(name.center(20,'*')) #字符串居中,空白以*填充
结果:
******wanglan*******
View Code

split : 分割 (可以将字符串转化为列表)

name = 'wang lan'
print(name.split()) #默认为空格,结果是列表
结果:
['wang', 'lan']


name = 'wanglan'
print(name.split('l')) #以l分割,分割后不含有分割符,也就是 l
结果:
['wang', 'an']
View Code

strip : 去除空格

name = '   wanglan  '  #字符串和引号中间是有空格的
print(name.strip()) #默认脱头尾两边的空格和换行符 

结果:
wanglan

name = 'qqwanglanqq'
print(name.strip('q'))
结果:
wanglan
View Code

join : 指定字符拼接

name = 'wanglan'
print('_'.join(name))
结果:
w_a_n_g_l_a_n

#一行代码把列表转换成字符串
name = ['wanglan]'
print(''.join(name))
print(type(name))  #查看数据类型
结果:
wanglan
<class 'list'>
View Code

replace :替换

name = 'wanglan'
print(name.replace('n','N')) #将小写的n替换成大写的N
结果:
waNglaN

#去掉字符串内的空格
name = 'w a n g l a n'
print(name.replace(' ',''))# 将空格替换为空
结果:
wanglan
View Code

startswith : 以什么开头

name = 'wanglan'
print(name.startswith('w')) #如果是返回True
print(name.startswith('f')) #如果不是返回False
结果:
True
False
View Code

endswith : 以什么结尾

name = 'wanglan'
print(name.endswith('n')) #如果是就返回Ture
print(name.endswith('f')) #如果不是就返回False
结果:
Ture
False
View Code

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
View Code

isalnum : 判断是否数字和字母

name = 'wanglan123'  #既可以是纯数字也可以是纯字母
print(name.isalnum())

结果:
Ture
View Code

isalpha:判断是否为纯字母

name = 'wanglan'
print(name.isalpha())
结果:Ture

name = 'wanglan1'
print(name.isalpha())
结果:
False
View Code

isdigit :判断是否为出数字

name = '1234'
print(name.isdigit())
结果:
Ture

name = 'wanglna'
print(name.isdigit())
结果:
False
View Code

其他

name = 'anglna'
print(name.islower())  #是否全部小写
print(name.isupper())  #是否全部大写
print(name.istitle())  #开头是否大写
View Code

字符串切片

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    
View Code

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]
View Code

remove :通过元素进行删除,删除指定的元素

lst = ['wang','lan','1','2','3']
lst.remove('wang') #移除
print(lst)

结果:
['lan', '1', '2', '3']
View Code

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']
View Code
lst = ['wang','lan']
l = lst.pop(0)
print(l)
结果:
wang
pop的返回值

clear :清空

lst = ['wang','lan','1','2','3']
lst.clear()
print(lst)
结果:
[]
View Code

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']
View Code

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']
View Code

lst = ['wang','lan','1','2','3']
print(lst[3])
结果:
1
View Code

其他操作

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
View Code

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
View Code

reverse :翻转

lst = [1,2,3,4,5,6,7,8,9]
lst.reverse()
print(lst)
结果:
[9, 8, 7, 6, 5, 4, 3, 2, 1]
View Code

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]
View Code
lst = [1,2,3,4,5]
for i in range(len(lst)):
    lst.pop()
print(lst)

[]
通过for循环删除列表中的内容

列表嵌套

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']]
View Code

元组

tuple :元组  ( )   

定义一个元组

tu = (1)   #括号里如果只有一个类型就是此类型
print(type(tu))
结果:
<class 'int'>

tu1 = (1,)  #括号里有逗号就时元组
print(type(tu1))
结果:
<class 'tuple'>
View Code

元组的操作

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
View Code

元组内的内容不可修改,但是可以切片和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
View Code
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)
View Code

 字典的操作

dic = {'name':'wanglan'} #键不存在就添加
dic['age']= 18
print(dic)

结果:
{'name': 'wanglan', 'age': 18}

 
dic = {'name':'wanglan'} #键存在就修改
dic['name']= 'wl'
print(dic)

结果:
{'name': 'wl'}
View Code

setdefault :存在就不进行添加,不存在就添加

dic = {'name':'wanglan'}
dic.setdefault('name','wl')
print(dic)
结果:
{'name': 'wanglan'}  #存在就不添加,也不会修改


dic.setdefault('age',18)
print(dic)
结果:
{'name': 'wanglan', 'age': 18} #不存在就天加
View Code

pop :通过键来删除

dic = {'name':'wanglan','age':18}
d = dic.pop('age')  #pop必须给值,值为字典的键,pop有返回值
print(dic)
print(d)  
结果:
{'name': 'wanglan'}
18 #被删除键的值
View Code

popitem :随机删除,在python3.6中删除最后一个,python3.5及以下随机删除

dic = {'name':'wanglan','age':18} 
dic.popitem() #popitem返回的是被删除的键和值,以元组的形式显示,元组中第一个是键,第二个是值
View Code

del  :删除字典

del dic #删除整个字典


dic = {'name':'wanglan','age':18}
del dic['name']  #通过键来删除
print(dic)
View Code

clear:清空字典

dic = {'name':'wanglan','age':18}
dic.clear()
print(dic)
结果:
{}
View Code

直接改

dic = {'name':'wanglan','age':18}
dic['name'] = 'wl'
print(dic)

结果:
{'name': 'wl', 'age': 18}
View Code

update :没有就添加,有就修改

dic = {'name':'wanglan'}
dic.update({'age':18})
print(dic)
结果:
{'name': 'wanglan', 'age': 18}
View Code
dic = {'name':'wanglan'}
dic1 = {'age':18}
dic.update(dic1)
print(dic)

结果:
{'name': 'wanglan', 'age': 18}
View Code

get

dic = {'name':'wanglan'}
print(dic.get('name'))  #通过键来查找
print(dic.get('age'))  #如果没有找到,默认返回None
print(dic.get('age','没有找到')) #如果没有找到,可以自定义返回值

结果:
wanglan
None
没有找到
View Code
dic = {'name':'wanglan'}
print(dic['age']) #如果没有找到会报错

结果:
KeyError: 'age' 
View Code

其他操作

dic = {'name':'wanglan','age':18}
for i in dic:
    print(i)

结果:
name
age
for 循环取得的是键
dic = {'name':'wanglan','age':18}
for i in dic:
    print(dic[i])
通过for循环取值
dic = {'name':'wanglan','age':18}
for i in dic:
    print(dic.get(i))

结果:
wanglan
18
推荐使用get来取值
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
通过 keys 取键
dic = {'name':'wanglan','age':18}
for i in dic.values():
    print(i)

结果:
wanglan
18
通过 values 取值
dic = {'name':'wanglan','age':18}
for i in  dic.items():
    print(i)

结果:
('name', 'wanglan')
('age', 18)
items :以元组的形式得到键值对
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)
通过for循环删除字典中的内容
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': ['太白', '姗姗', '老村长']}
fromkeys

嵌套

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])
View Code

解构

a = 10
b = 20
a,b = b,a
print(a)   #20
print(b)   #10

结果:
20
10
View Code
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}
View Code

集合操作

s = {1,2,3,4,5,6,}
s.add(7)
print(s)
 结果:
{1, 2, 3, 4, 5, 6, 7}
View Code

随机删除

s = {1,2,3,4,5,6,}
s1 = s.pop()   返回值,返回的被删除的元素
print(s)
print(s1)

结果:
{2, 3, 4, 5, 6}
1
View Code

删除整个集合

s = {1,2,3,4,5,6,}
del s
print(s)

NameError: name 's' is not defined
View Code

通过元素指定删除

s = {1,2,3,4,5,6,}
s.remove(2)
print(s)
结果:
{1, 3, 4, 5, 6}
View Code

先删除,后添加

s = {1,2,3,4,5,6,}
s.remove(2)
s.add(7)
print(s)

{1, 3, 4, 5, 6, 7}
View Code

for 循环

s = {1,2,3,4,5,6,}
for i in s:
    print(i)

1
2
3
4
5
6
View Code

面试题

将列表去重

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)))
View Code

其他操作

s  = {"黑哥"}
s1 = {'虎哥','开哥','alex哥','黑哥','wu哥'}
print(s & s1)  #  交集  俩个集合都有的才输出
print(s | s1)  #   并集  两个集合 合并到一起
print(s1 - s)  # 差集   前面减后边的集合前边集合中有的输出出来   自己总结
print(s ^ s1)  # 反交集  输出不一样的
print(s < s1)  # 子集
print(s1 > s)   # 超(父)集
View Code

冻结结合

dic = {{1,2,3}:1}    集合不能作为键
a = frozenset((1,2,3))   同过frozenset将元组冻结
dic ={a:1}  元组就可以作为键了
print(dic)
print(dic)
View Code

深浅拷贝

浅拷贝

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, [...]]
View Code

编码

 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)
View Code

 

小数据池

数字的范围
 -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

 

原文地址:https://www.cnblogs.com/wanglan/p/7590344.html