python基础—基本数据类型—数字,字符串,列表,元组,字典
1、运算符
(1)基本运算符
+ 加法
- 减法
* 乘法
/ 除法
** 幂
// 取整(除法)
% 取余(除法)
(2)判断某个东西是否在某个东西里面包含
in
not in
(3)结果是值
a、算术运算
a=10*10
b、赋值运算
a=a+! a+=1
(4)结果是布尔值
a、比较运算
a=1>5
b、逻辑运算
a=1>6 or 1==1 一方为真则为真
a=1>6 and 1==1 同时为真则为真
c、成员运算
a="小" in "小缠绵"
a="小" not in "小缠绵"
2、基本数据类型
(1)、数字 int
a、int 将字符串转换为数字
a="123" print(type(a),a) #<class 'str'> 123 b=int(a) print(type(b),b) #<class 'int'> 123 num="0011" v=int(num,base=2) print(v) #以二进制的形式 v=3
b、 bit_length 当前数字的二进制,至少用n位表示
age=2 r=age.bit_lenght() print(r) #2, 2的二进制为11,如果age=5,则输出为3,因为5的二进制为101
(2)、字符串 str
python中字符串有三种表现形式,分别是单引号,双引号,三引号
字符串一旦创建,不可修改
一旦修改或者拼接,都会造成重新生成字符串
a、首字母大写 capitalize()
test="alex" v=test.capitalize() print(v)
b、所有的字符变小写 casefold()和lower()
区别:casefold()可以改变很多未知的,lower()只能改变熟知的
test = 'alex' v1=test.casefold() print(v1) v2=test.lower() print(v2)
c、设置宽度,并将内容居中 center()
test = 'alex'
v3=test.center(20,"*") # 20 代指总长度,*空白位置填充,一个字符,可有可无
d、字符串中寻找子序列出现的次数 count(sub,start=None,end=None)
sub:子序列
start:起始位置,默认为空
end:终止位置,默认为空
test = 'alex' v4=test.count('l',1,4)
e、判断以什么结尾/开头,endswitch(suffix, start=None, end=None)和startswitch(suffix, start=None, end=None)
suffix:需要判断你的字段
start:起始位置
end:终止位置
返回值为布尔值
test = 'alex' v5=test.endswith('ex',1,4) v6=test.startswith('a')
f、从开始往后找,找到第一个后,获取其位置
①find()
test = 'alex'test.find('ex') >>2
②index()
test = "alex" test.find('ex') >>2 # 说明如果找不到会抛出一个异常
g、格式化,将一个字符串种的占位符替换为指定的值
(1)指定参数
test='I am {name},age {a}' print(test) v=test.format(name='Christian',a=26) print(v)
(2)根据索引
test1='I am {0},age {1}' print(test1) v1=test1.format('C',19) print(v1)
h、字符串中是否只包含 字母和数字 结果为Ture False
v=test.isalpha()
i、当前输入是否是数字
①、只判断数字,对于特殊字符以及汉字不支持
test="二" v1=test.isdecimal() >> False
②、可以含有特殊字符,比如②,不支持汉字
v2=test.isdigit() >> False
test1 = "②"
test1.isdigit() >> True
③、同时支持数字,汉字,以及特殊字符
test = '二' test.isnumeric() >>True test1 = '②' test1.isnumeric() >>True test2 = "2" test2.isnumeric() >>True
j、判断是否存在不可显示的转义字符,若没有,输出ture,否则false
test="ssfsgghh\t" test.isprintable() >>False # 返回False 表示存在
test = "safaf\\t"
test.isprintable() >>True # 返回True 表示不存在
k、判断是否全是空格,是输出Ture,否则False
test=' ' v=test.isspace() >>True
l、判断是否是标题(标题每个单词的首字母都是大写)并转换为标题
test='dafgg gsgh hfsfs' v1=test.istitle() # 判断是否为标题 print(v1) #输出V1为False v2=test.title() # 转化为标题 print(v2) #输出v2为Dafgg Gsgh Hfsfs v3=v2.istitle() print(v3) #输出v3为 Ture
m、将字符串中的每一个元素按照指定分隔符进行拼接
test="你是风儿我是沙" print(test) #你是风儿我是沙 t=' ' v1=t.join(test) v2='_'.join(test) print(v1) #你 是 风 儿 我 是 沙 print(v2) #你_是_风_儿_我_是_沙
n、设置内容宽度,并将内容居左,居中,居右显示
①、将内容居中
test="alxe" v=test.center(20,"中") #20代指总长度,空白未知填充一个字符,可有可无 print(v) #中中中中中中中中alxe中中中中中中中中
②、将内容居左
test="alex" v1=test.ljust(20,"中") print(v1) #alex中中中中中中中中中中中中中中中中
③、内容居右显示
test="alex" v2=test.rjust(20,"中") print(v2) #中中中中中中中中中中中中中中中中alex
O、大小写转换(对整个字符串,要么全是大写,要么全是小写)
①、判断是否全部为小写并转换为小写islower()和lower()
test="Christian" v1=test.islower() print(v1) #False v2=test.lower() print(v2) #christian v3=v2.islower() print(v3) #ture
②、判断是否全部为大写并转换为大写isupper()和upper()
test="Christian" v1=test.isupper() print(v1) #False v2=test.upper() print(v2) #CHRISTIAN v3=v2.islower() print(v3) #ture
p、大小写转换(对字符串中的大写字符转换为小写,小写字符转换为大写)
test="Christian" v=test.swapcase() print(v) #cHRISTIAN
q、移除指定字符串
①、strip()
test = " Christian " test.strip() >>Christian
②、lstrip()
test = " Christian " test.lstrip() >>"Christian "
③、rstrip()
test = " Christian " test.rstrip() >>" Christian"
r、按照指定字符分割字符串,返回列表
test = "Christian Negan Alex" test.split() >>["Christian", "Negan", "Alex"]
s、索引方式获取字符串中的某一个字符
test='ALEX' test[0:3] >>ALE #区间0<=X<3,包头不包尾 test[0] >>A #第一个字符 test[-1] >>X # 取最后一个字符
t、获取字符串的长度
test = 'Negan' len(test) >>5
u、字符替换 replace(self, old, new, count=None)
test= “Christian” test.replace('i', '') >>Chrstan
v、一个一个输出字符串的内容
①、while循环
idex=0 test="我要好好学习Python" while idex < len(test): v=test[idex] print(v) idex+=1 print('end')
②、for循环
for 变量名 in 字符串:
test="我要好好学习Python" for idex in test: print(idex)
w、获取字符串中最大和最小字符
①、最大字符 max()
test = "Christian" max(test) >>"t"
②、最小字符 min()
test = "Christian" min(test) >>"t"
(3)、列表 list
中括号括起来,用","分割每个元素,元素可以是数字,字符串,列表,bool值……总之所有的东西都能放进去
索引取值,结果是元素
切片,切片结果是列表
列表元素可以被修改(内存地址不会被改变)
a、修改
①、索引的方式进行修改
li=[234,222,'assx',['sssa','sss',[1]]] li[1]='age'
li > [234, 'age', 'assx', ['sssa', 'sss', [1]]]
②、切片的方式进行修改
li=[234,222,'assx',['sssa','sss',[1]]]
li[1:3]=[2,'a'] >> [234, 2, 'a', ['sssa', 'sss', [1]]]
b、删除
①、索引方式
li=[234,222,'assx',['sssa','sss',[1]]] del li[1] li >> [234,'assx',['sssa','sss',[1]]]
②、切片方式同样适用
li=[234,222,'assx',['sssa','sss',[1]]] del li[0:2] li >> ['assx',['sssa','sss',[1]]]
c、在原来的值后面追加
①、append(object)
list.append(object) 向列表中添加一个对象object
使用append的时候,是将new_media看作一个对象,整体打包添加到music_media对象中。
music_media = ['compact disc', '8-track tape', 'long playing record'] new_media = ['DVD Audio disc', 'Super Audio CD'] music_media.append(new_media) music_media >>['compact disc', '8-track tape', 'long playing record', ['DVD Audio disc', 'Super Audio CD']]
②、extend(sequence)
扩展原来的列表,参数为可迭代对象,内部执行for循环
list.extend(sequence) 把一个序列seq的内容添加到列表中
使用extend的时候,是将new_media看作一个序列,将这个序列和music_media序列合并,并放在其后面。
music_media = ['compact disc', '8-track tape', 'long playing record'] new_media = ['DVD Audio disc', 'Super Audio CD'] music_media.extend(new_media) music_media >>> ['compact disc', '8-track tape', 'long playing record', 'DVD Audio disc', 'Super Audio CD']
d、清空列表 clear()
li = [1,2,3]
li.clear()
li >> []
e、拷贝(浅拷贝)
li = [1,2,3] v=li.copy() v >> [1,2,3]
f、计算元素在列表中出现的次数
li=[1,2,3,4,1] v=li.count(1) v >> 2
g、根据值获取当前值索引位置(左边优先)
li=[234,222,'assx',['sssa','sss',[1]]] v=li.index(222) v >>1
h、在指定索引位置插入元素
insert(self, index, p_object)
li=[234,222,'assx',['sssa','sss',[1]]] li.insert(0,"chen") li >>['chen', 234, 222, 'assx', ['sssa', 'sss', [1]]]
i、pop删除某个值(指定索引,默认是最后一个),并返回当前的值
pop(self,index=None) 改变原列表,内存地址不会发生改变
li=[234,222,'assx',['sssa','sss',[1]]] v=li.pop(0) li >>[222, 'assx', ['sssa', 'sss', [1]]] v >>234
j、删除列表中的指定值,左边优先
remove(self,value) 改变原列表,内存地址不会发生改变
li=[234,222,'assx',['sssa','sss',[1]]] li.remove(234) li >>[222, 'assx', ['sssa', 'sss', [1]]]
k、将当前列表进行反转
reverse(self)
li=[234,222,'assx',['sssa','sss',[1]]] li.reverse() li >>[['sssa', 'sss', [1]], 'assx', 222, 234]
l、排序
sort(self,key=None, reverse=False) 默认从小到大
li=[234,222,22345] li.sort(reverse=1) # 1表示为True,倒序排列 li >>[22345, 234, 222]
扩展:
sort()是应用在list上的方法,对已经存在的列表进行操作 ,无返回值。
sorted()函数对所有可迭代对象进行操作(所有能被for循环的都是可迭代对象),会返回一个新的list
li=[234,222,22345]
sorted(li, reverse=True) >> [22345,234,222]
m、列表转换成字符串
①、既有数字又有字符串需要自己写for循环一个一个处理
li=[11,22,33,'123','Alex'] s='' for item in li: s=s+str(item) s >>112233123Alex
②、如果只有字符串,用join()方法
和字符串中的join方法类似
li=["123",'alex'] v=''.join(li) v >>123alex
n、列表生成式
l = [i for i in range(10) if i % 2 == 0]
l >> [0,2,4,6,8]
(4)、元祖 tuple
元素不可被修改,不能被增加或者删除(一级元素不可被修改)
tu=(111,222,333)
count 获取指定元素在元组中出现的位置
index 获取指定元素在元组中出现的次数
注意:如果元祖中只有一个元素,元素后面需要加一个“,”。
tu=(111,"alex","Christian",111,34) v1=tu.count(111) v2=tu.index(111) print(v1,v2) >>>>2 ,0
(5)、字典 dict
字典的value可以使任意值
列表,字典不能作为字典的key
字典是无序的
字典支持del
字典可以for循环
a、输出字典的Key值
info={"K1":"V1", "K2":"V2"} for item in info.keys(): print(item) >>K1 K2
b、输出字典的value
info={"K1":"V1", "K2":"V2"} for item in info.values(): print(item)
>>1
2
c、同时输出字典的键和值
①手动输出
info={"K1":"V1", "K2":"V2"} for item in info.keys(): print(item,info[item]) >> K1 V1 K2 V2
②自动循环输出键值对
info = {"K1": "V1","K2": "V2"} for k,v in info.items(): print(k,v) >> K1 V1 K2 V2
d、根据序列,创建字典,并指定统一的值
v=dict.fromkeys(['k1','k2','k3'],123) v >>{'k1': 123, 'k2': 123, 'k3': 123}
e、根据key获取值
①使用get()获取,如果key不存在,则返回None
info = {"K1": "V1","K2": "V2"} v=info.get('K1') v >> v1
②、通过索引key获取,如果key不存在,会报错
info = {"K1": "V1","K2": "V2"} info['K1'] >> V1 info['K3'] >> KeyError # 对于不存在的key,会抛出异常。
f、设置值
①、通过key设置value
如果存在key,则更改对应的value值,如果不存在,则给字典新增key和value
dic = {'a':1, 'b':2} dic['a'] = 22 # 更改 dic >> {'a':22, 'b':2} dic['c'] = 33 # 增加 dic >> {'a':22,'b':2,'c':33}
②、setdefault
key已存在,不设置,获取当前key对应的值
key不存在,设置,获取当前key对应的值
info = {"K1": "V1","K2": "V2"} V=info.setdefault('K1', 22) info.setdefault('k3',11) V >> V1 info >> {'K1': 'V1', 'K2': 'V2', 'k3': 11}
g、更新
info = {"K1": "V1","K2": "V2"} info.update({'K1':11}) #info.update(K1=11) info >>{'K1': 11, 'K2': 'V2'}