python全栈学习总结二:数字、字符串、列表、元组、字典重要特点及方法

一 python中数据类型

  整形:int

  字符串:str

  列表:list

  元组:tuple

  字典:dict

  布尔值:bool

  浮点型:float

  一切皆对象,在python中,所有的数据类都是看做对象,故所有的类型名称都是类,通过类来建立对象,每个类中都有相应的方法,下面我们通过总结上面其中数据类型的特点以及常用的方法,来加深我们这些数据“类”的认识和理解。

 二 各种数据类型总结

  1 整形int

  定义:age = 10  

  转换:value = int('158')  把字符串‘158’转换成整型158

      value = int('ab',base = 16),以16进制转换,注意若是不加base =16则默认以十进制转换

  求数字的长度:age.big_length() 使用整型自身的方法输出所占的长度

  2 字符串

  定义:用单引号、双引号个、三个单引号、三个双引号包括起来的各种数据

       name = 'qiluzhuiche'

  索引:print(name[0])  ---->q  

  切片:name[0:2]  字符串中的前两个元素

     name[:-1]  字符串中的除最后一个所有元素

     name[2:6:1]

  迭代:for c in name:

      print(c)

      可以打印出字符串中的每个字符

  注意:字符串一旦创建,则不可修改,一旦修改或拼接,都会重新生成字符串,字符串在内存中是连续分配的一串单元,若是对其修改,则重新开辟一片单元。原先的内存单元将被解释器释放掉。

  关系运算:‘q’ in name --->True

  字符串方法总结:

  (1)字符转换

    

name = 'qilvzhuiche is my qq'
v = name.capitalize() #首字母大写
print(v)
v = name.upper()#字符串全部大写
print(v)
v = name.lower()#字符串字母全部小写
print(v)
v = name.title()#字符串中的字符的首字母大写
print(v)

   (2)字符判断

  

name = 'qilvzhuiche is  my qq'
v = name.endswith('qq')#字符串是否以qq结尾
print(v)
v = name.startswith('qi')#字符串是否以qi开头
print(v)
name = 'xiaom ing'
v = name.isalnum()#判断字符串是否只包含字符、数字而不包含其他特殊字符
print(v)
v = name.isalpha()#判断字符串是否只包含字符而不包含其他特殊字符
print(v)
name = '2②二'
v1 = name.isdecimal()#判断是否质保函数自发自
v2 = name.isdigit()#判断是否只包含数字,支持特殊字符②
v3 = name.isnumeric()#判断是否只包含数字,支持中文数字’二‘
print(v1,v2,v3)
name = '_li2u'
v = name.isidentifier()#判断标识符是否定义的字母、数字、下划线组成
print(v)
name = 'Liu'
v1 = name.islower()#判断字符是否都是小写
v2 = name.isupper()#判断字符是否都是大写
v3 = name.istitle()#判断字符首字符是否大写
print(v1,v2,v3)
name = 'liu \n'
v = name.isprintable()#判断字符串中是否存在不可显示的字符\n\t\r等
print(v)
name= '   '
v = name.isspace()#判断字符是否是空格
print(v)

(3)字符串格式化

  两个方法format  format_map

test = "I am {name},age = {age}"
v = test.format(name = 'qilvzhuiche',age = 30) #通过变量对应的字符来重新设置字符串,注意是重新生成的字符串
v = test.format_map({'name':'qilvzhuiche','age':30})#通过字典重新格式化字符串
print(v)
test = "I am {0},age = {1}"
v = test.format( 'qilvzhuiche',30)#通过字符串中的索引重新格式化字符串
print(v)

(4)分割字符串

name = "   qilvzhuiche   "
v1 = name.strip()#去掉字符串两边的空白字符
v2 = name.lstrip()#去掉字符串左边的空白字符
v3 = name.rstrip()#去掉字符串右边的空白字符  三个方法也可以带参数指定去掉两边的字符,默认去掉空白字符
print(v1+'\n'+v2+'\n'+v3)

v1 = name.partition('i')#从左边开始以‘i'分割字符串,返回元组的形势保存
print(v1)
v2 = name.rpartition('i')#从右边开始以’i'分割字符串,返回元组的形势保存
print(v2)
name = 'qi lv zhui che'
v1 = name.split()#从左到右开始以‘i'为分隔符分割,保存到列表中
print(v1)
v2 = name.rsplit()#从右到左开始以’i’为分隔符分割,保存到列表中 默认以空格分割,注意比较partition的异同
print(v2)
test = 'good \n study \n upper'
v = test.splitlines()#以换行符\n进行分割
print(v)

(5)拼接字符串

 """
 str.join(元组、列表、字典、字符串) 之后生成的只能是字符串。
所以很多地方很多时候生成了元组、列表、字典后,可以用 join() 来转化为字符串。
 """
v = '*'.join("Hello") #字符串拼接
print(v)
v = ','.join('123456789')
print(v)
print(type(v))

(6)统计功能

msg = "good good study,day day up!"
num = msg.count('good') #统计某个字符串含有某个字符的个数
print(num)
msg1 = '人生苦短,我学python!'
num = msg1.count('')
print(num)

(7)字符串排列

msg = 'I study python!'
v = msg.center(30,'*')#使字符串居中,剩余位置填充
v = msg.rjust(30,'*') #使字符串靠右对齐,剩余位置填充*
v = msg.ljust(30,'*')#使字符串靠做对齐,剩余位置填充*
v = msg.zfill(30)#使字符串靠右对齐,剩余位置填充0
print(v)

(8)字符串查找功能

"""
find和index都是从左向右查找指定的字符串,不同之处是,若是查找不到,
find返回值为-1,index则报异常
rfind和rindex则是从右向左查找,其余功能相同
"""
msg = '人生苦短,我学python!'
v1 = msg.find('')
v2 = msg.index('')
print(v1)
print(v2)
v3 = msg.find("")
print(v3)

(9)字符替换功能

msg = "人生苦短,我学python"
v = msg.replace('','') #在字符串中,用新字符替换旧字符
print(v)
msg1 = 'good good study,Day Day up!'
v = msg1.replace('good','Good') #
print(v)
v = msg1.swapcase() #小写转换为大写,大写转换为小写
print(v)

(10)根据转换表转换字符串

"""
Python translate() 方法根据 maketrans() 方法给出的字符映射转换表转换字符串中的字符。
使用 maketrans() 方法加 translate() 方法将所有元音字母转换为指定的数字,并删除指定字符:
"""
intab = "aeiou"
outtab = "12345"
deltab = "thw"

trantab1 = str.maketrans(intab,outtab) # 创建字符映射转换表
trantab2 = str.maketrans(intab,outtab,deltab) #创建字符映射转换表,并删除指定字符

test = "this is string example....wow!!!"

print(test.translate(trantab1))
print(test.translate(trantab2))

(11)expandtabs应用TAB打印

"""
expandtabs指定转换字符串中的 tab 符号('\t')转为空格的字符数,默认的字符数是8。
"""
msg = "姓名\t年龄\t性别"
msg2 = "骑驴追车\t19\t男"
msg3 = "若水三千\t28\t男"
v = msg.expandtabs()
print(v)
v = msg2.expandtabs()
print(v)
v = msg3.expandtabs()
print(v)

(12)字符串编码和解码

"""
encode() 方法以指定的编码格式编码字符串,默认编码为 'utf-8'。
bytes decode() 方法以指定的编码格式解码 bytes 对象,默认编码为 'utf-8'。
"""
#!/usr/bin/python3

S = "人生苦短,我学python";
S_utf8 = S.encode("UTF-8")
S_gbk = S.encode("GBK")

print(S)

print("UTF-8 编码:", S_utf8)
print("GBK 编码:", S_gbk)

print("UTF-8 解码:", S_utf8.decode('UTF-8','strict'))
print("GBK 解码:", S_gbk.decode('GBK','strict'))

3 列表list总结

定义:ages = [18,23,27,19,21]  #用[]表示列表,列表中的各个元素用逗号隔开,元素可以是数字、字符串、布尔值、列表、字典等

索引:列表具有索引功能,可以通过索引取值,ages[1]--->23

切片:列表可以通过切片取值功能,age[1:3]--->23,27

迭代:可以通过for循环取出所有的值,具有遍历功能。

3.1列表的增删改查:

增:names =[]

  names.append('qilvzhuiche')#通过列表方法append来增加列表元素

  names.insert(0,'ruoshuisanqian')通过列表方法在指定位置增加元素

  names.entend(['yingzaidasi','yangfanqihang','zailushang'])#增加多个元素,注意与append的区别,append当成一个元素添加,extend相当于把两个列表合并

删:

  del  names[2] #通过del删除指定位置元素

  names.pop()#删除最后一个元素,自动弹出,返回值为弹出的元素

  names.pop(2)#删除指定位置元素,返回值为删除的元素

  names.remove('yangfanqihang')#移除指定名称的元素

改:

  names[1] = 'weinidengdai'  #修改指定位置的元素

查:

  ‘zailushang’  in names #判断值是否在列表中 

  'weinidengdai' not in names #判断值是否不在列表中

  names.count('zailushang')#通过查询列表元素出现的次数,判断是否存在

  name.index('zailushang',0,len(names))#通过查询列表出现的位置判断元素是否存在

names = []
#
names.append('qilvzhuiche')
names.insert(0,'ruoshuisanqian')
name2 = ['yingzaidasi','yangfangqihang','zailushang']
names.extend(name2)
print(names)
#s删
names.pop()
names.pop(0)
del names[0]
names.remove('yingzaidasi')
print(names)
#
names[0] = 'zailushang'
print(names)
#
v = 'zailushang' in names
print(v)
v = 'yangfanqishang' not in names
print(v)
v = names.count('zailushang')
print(v)
v = names.index('yangfanqihang')#当所查找元素不存在是,会引起异常
print(v)
View Code

3.2列表的排序

ages = [23,24,19,27,21,31]
v = ages.sort() #sort方法直接对列表进行排序,没有返回值
print(v)
print(ages)
ages = [23,24,19,27,21,31]
v = sorted(ages) #sorted函数对列表重新排序后以返回值输出,
print(v)
print(ages)
ages = [23,24,19,27,21,31]
v = ages.sort(reverse=True) #sort方法直接对列表进行排序,reverse=True时,默认倒序排列
print(v)
print(ages)
ages = [23,24,19,27,21,31]
v = ages.reverse() #reverse方法是通过从大到小排列列表,无返回值,直接对列表操作。
print(v)
print(ages)

3.3 列表常用其他方法

names.clear() #对列表进行清空

names.copy()#对列表进行软拷贝

len(names)#求列表的长度

4 元组tuple总结

定义:gender = ('man','woman','none') #元组用小括号定义,中间用逗号隔开,至少要含有一个逗号,表示元组.

特点:元组的元素不可以被修改,增加、删除等,只能整体修改。元组的一级元素不可修改。

访问:可以索引访问,也可以切片访问。

迭代:可以for循环遍历

方法:count()#统计  index:查询元素位置

5 字典dict总结

定义:infor = {'name':'qilvzhuiche','sex':'man','age':18},字典用大括号来包含元素,还有键值对

特点:(1)字典的值value可以是任何值

   (2)字典的键key可以是:数字int、字符串str、布尔值bool、元组tuple。

   (3)字典是无序的

      (4)字典可以迭代,用for循环遍历

   (5)字典支持通过键来索引查找

5.1字典的增删改查:

infor = {'name':'qilvzhuiche','sex':'man','age':18,'job':'computer'}
#
infor['hobby'] = 'play'
#
del infor['sex']
v  = infor.pop('hobby')
print(v)
#
infor['age'] = 19
#
v= infor.get('age')
print(infor)
print(v)

5.2字典的循环遍历(迭代)

infor = {'name':'qilvzhuiche','sex':'man','age':18,'job':'computer'}
for key,value in infor.items():
    print("键:%s 值:%s"%(key,value))
for key in infor.keys():
    print("键:%s"%key)
for value in infor.values():
    print("值:%s"%value)

5.3 字典的其它方法

infor = {'name':'qilvzhuiche','sex':'man','age':18,'job':'computer'}
info1 = infor.copy()#字典拷贝
del infor['sex']
print(infor)
print(info1)
v = infor.popitem()  #随机删除一个键值对
print(v)
v = infor.clear() #清空字典
print(v)
print(infor)
infor.setdefault('hobby','paly')#设置键值对,默认为None
infor.update({'name':'ruoshuisanqian','gender':'man','age':'28'})
print(infor)

seq = ('Google', 'Runoob', 'Taobao')

dict1 = dict.fromkeys(seq)  #字典的静态方法运用
print("新字典为 : %s" %  str(dict1))

dict = dict.fromkeys(seq, 10)
print ("新字典为 : %s" %  str(dict1))

6 集合set总结

定义:s = {1,3,6,8,9}

特点:不同元素、无序、不可变类型、可哈希的值

迭代:可以for循环遍历

判断元素是否属于集合的方法?in,not in

通过创建、转换集合可以去除重复的元素!在这方面有重要的应用!

6.1集合的基本方法

#set
s = {1,2,3,4,5,6,7,9}

s.add(0) #添加元素
s.add(10)
s1 = s.copy()
#s.clear()
s.pop()
s.remove(5)

print(s)
print(type(s))
print(s1)
s.discard(12) #移除没有的元素 不会报错
#s.remove(11) #移除没有的元素,就报错
6.2 集合的重要方法
s1 = {1,2,3,4,5,6}
s2 = {5,6,7,8,9}
#求交集
v1 = s1.intersection(s2)
v2 = s1 & s2
#求并集
v1 = s1.union(s2)
v2 = s1 | s2
#求差集
v1 = s1.difference(s2)
v2 = s1 - s2
#求交叉补集  去掉两个集合公共部分的合集
v1 = s1.symmetric_difference(s2)
v2 = s1 ^ s2

#集合更新
v1 = s1.update(s2)
v2 = s2.update(s1)
print(v1,v2) #update方法,直接更新原集合,没有返回值
print(s1,s2)

"""
//更新原先集合
s1.difference_update()
s1.intersection_update()
s1.symmetric_difference_update()
"""
#求是否是子集
s3 = {5,6}
v = s1.isdisjoint(s2) #求是否有交集 没有返回True  有返回False
v = s3.issubset(s1) #s3是否S1的子集?
v2 = s3 <= s1

v = s2.issuperset(s3) #s2是否S3的父集?
v2 = s1>= s3
print(v,v2)

猜你喜欢

转载自www.cnblogs.com/qilvzhuiche/p/9266172.html