python基础数据类型

时间:2022-04-06 02:29:11

list方法设置

list的作用主要是用来存放一个整体,比如班级所有学生的名字存放,用普通字符串的话,可存取为:names = 'marry lily king .....',可如果需要单独取出某一个学生的名字的话,则无法进行,所以我们需要有一个更便捷的记录方式来进行记载,如我们所说的列表,也可以叫做数组,列表定义方式就用中括号[]即可,可以列表中嵌套列表,嵌套一个叫做二维数组,三个则叫三维数组,以此类推参考一下列子:

list1 = [1,2,3,4,] #一个普通的数组
list2 = ['张三','李四',['王五','赵六']] #二维数组
list3 = ['name','sex',['lili','123',['aaa','bbb']]] #三维数组

增:

msg = 'nihao'
name = ['aaa','bbb','ccc']
name.append(msg) # 从最后开始插入
name.insert(1,msg) # 指定位置插入
print(name)

 

删:

msg = '您好
name = ['aaa', 'bbb', 'ccc']
name.remove('aaa') #删除指定值
del.name[0] #删除指定位置
name.pop() #不差纳入下标的话则删除最后一个,传入下标删除指定位置
name.clear()#清空列表

 

改:

msg = '您好
name = ['aaa', 'bbb', 'ccc']
name[1] ('111') # 修改指定位置的值

 

查:

msg = '您好
name = ['aaa', 'bbb', 'ccc']
print(name[0]) # 打印第一个元素

 

列表操作的一些内置方法:

msg = '您好
name = ['aaa', 'bbb', 'ccc']
name2 = [1,2,3,4,['hehe','haha']]
print (name.index('cc')) #取索引
print (name.count('cc')) #取cc出现的次数
print (name.sort()) #排序,根据assic码来排序
name.extend(name2) #扩展列表,把name2加到name里
name.reverse() #翻转数组,改变原数组值

 

 切片:切片是另一种方式获取列表的值,可获取多个元素,可取从第某个到第某个元素之间的值,格式为:name:[1:10],切片的话是指取第一个元素到底9个,不包含尾部值,顾头不顾尾步长值为正数则正序取值,负数则倒序取值

l = list(range(1,11))
l = ['a','b','c','d','e','j','k','l','m','n','o']
print(l[2:8])#顾头不顾尾
print(l[:5])#如果最前面没写的话,代表从0开始取的
print(l[4:])#如果冒号后面的没写的话,代表去到最后
print(l[:])#如果冒号后面的没写的话,代表去到最后
print(l[::3])#步长,也就是代表隔几个取一次,
nums = list(range(1,101))
print(nums[1::2]) #取偶数,
print(nums[::2]) #取奇数
print(nums)
print(nums[::-1]) #取奇数

 元组
元组与列表大同小异,唯一的区别就是元组的值无法进行修改,一旦创建则不能再进行改变,需要存储的内容例如,数据库的链接信息,这种即使在运行过程中也是不能被改变的,如果改变则无法使用,这种情况则可以使用元组。看到元组则可理解为无法改变不能改变,定义方式为:()小括号的方式,;元组只有两种方法:count和index

mysql_coon = ('192.168.1.1','root','123456')

 

 字典
已经说过:整形,浮点型,字符型,列表和元组,而字典则属于一种新的数据了类型,字典也是我们开发过程中最常用的一种数据类型;比如,现在要存整个深圳所有人的信息,有姓名,年龄,性别,家庭住址,学历等等,那要是用列表存的话,那就得定义N多个数组,然后存上每个人的信息,则数据会很庞大很累,这时候又有一种新的数据类型出现了,那就是字典,dict,全称是dictionary,它具有极快的查找速度;字典是一种key-value的数据类型,比如说要存每个人的信息,那么每个人的编号就是key,value就是每个人的信息,这样的话,一个字典就能存所有人的信息了。字典的定义使用{},大括号,每个值用“,”隔开,key和value使用“:”分隔。
举个列子,如果用列表存每个人的信息的话,需要用两个列表,一个存人名,一个存信息:

name = ['zhang', 'li', 'wang']
infos = [[18,13111111111],'深圳'],[[19,13122222222],'湖南']

给一个名字,如果要查他的对应信息,那就要先从names里面找到它的位置,然后再从infos中找到它的信息,如果这个列表越长,那么它的查询速度越慢。
如果用字典实现的话,只需要一个名字和信息对应的一个表,这样就很快的根据名字找到它对应的信息,无论这个表有多大,查找速度都不会变慢。

 
infos = {'zhang':[18,13111111111,'广东'],'li':[19,13122222222,'湖南'],'wang':[20,13122222333,'上海']}
infos =['zhang']

为什么dict查找速度这么快?因为dict的实现原理和查字典是一样的。假设字典包含了1万个汉字,我们要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。
第二种方法是先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢,这种就是字典的实现方式。
字典的特性:
字典是无序的,因为它没有下标,用key来当索引,所以是无序的
字典的key必须是唯一的,因为它是通过key来进行索引的,所以key不能重复,天生就去重

字典的增删改查:

增:

infos = {'zhang':[18,13111111111,'广东'],'li':[19,13122222222,'湖南'],'wang':[20,13122222333,'上海']}
infos['zhang']=[55,13144444444,'河南']

删:

infos = {'zhang':[18,13111111111,'广东'],'li':[19,13122222222,'湖南'],'wang':[20,13122222333,'上海']}
infos.pop('zhang') #标准删除
del infos['zhang']
infos.popitem() #随机删除一个在值

改:

infos = {'zhang':[18,13111111111,'广东'],'li':[19,13122222222,'湖南'],'wang':[20,13122222333,'上海']}
infos['zhang']=[55,13144444444,'河南']

查:

infos = {'zhang':[18,13111111111,'广东'],'li':[19,13122222222,'湖南'],'wang':[20,13122222333,'上海']}
infos.get('zhang')#获取marry的信息,这种方式如果key不存在的话,会返回None
infos['zhang']#获取marry的信息,这种方式如果key不存在的话,会报错
'zhang' in infos#判断marry是否在这个字典中,返回True或者False

字典的内置方法:

dic = {'stu1':'zhang','stu2':'li','stu3':'wang'}
print(dic.values()) # 打印所有value
print(dic.keys()) # 打印所有的key
print(dic.setdefault('stu1', 'zhao')) # 如果这个key存在的话,那就不动它,不存在的话,添加一个
dic2 = {'stu1': 'sriba', 'stu10': 'baidu'}
dic.update(dic2) # 更新字典值,如果key存在的话,就更新,不存在的话就添加
print(dic.items()) # 字典转换成一个list

循环字典:

dic = {'stu1':'zhang','stu2':'li','stu3':'wang'}
for k in dic:
print(k, dic[k]) # 打印key和value的值,推荐使用这种方式,速度快
for k, v in dic.items():
print(k, v) # 打印key和value的值,这种方式不推荐,因为会把字典转换成列表,效率不高

 

字符串和字符串操作

字符串一般可用来存储一串字符,如自己的名字,但int类型是无法存储的

name = 'zhangsan'
msg = 'welcome to china'

字符串的内置方法:常用方法如下,一下注释为是否的返回的是布尔值


name = 'my \t name is {name},age is {age}.'
print(name.capitalize()) # 大写
print(name.center(50, '-')) # 50个-,把name放中间
print(name.endswith('u')) # 是否以x结尾
print(name.expandtabs(30)) # 补\t的次数
print(name.find('n')) # 查找字符串的索引
print(name.format(name='niuniu', age=18)) # 这个是格式字符串,再第一节的博客里面已经写了
print(name.format_map({'name': 'niuniu', 'age': 19})) # 这个也是格式化字符串,后面跟的是一个字典,字典在后面也会写
print('abA123'.isalnum()) # 是否包含数字和字母
print('abA'.isalpha()) # 是否是英文字母

print('122'.isdigit()) # 是否是数字
print('aa'.isidentifier()) # 是否是一个合法的变量名
print('aa'.islower()) # 是否是小写字母
print('AA'.isupper()) # 是否是大写字母
print('Loadrunner Book'.istitle()) # 是不是一个标题,判断首字母是否大写
print('+'.join(['hehe', 'haha', 'ee'])) # 拼接字符串
print(name.lower()) # 变成小写
print(name.upper()) # 变成大写
print('\nmysql \n'.lstrip()) # 默认去掉左边的空格和换行
print('\nmysql \n'.rstrip()) # 默认去掉右边的空格和换行
print('\nmysql \n'.strip()) # 默认去掉两边边的空格和换行
p = str.maketrans('abcdefg', '1234567') # 前面的字符串和后面的字符串做映射
print('cc ae gg'.translate(p)) # 输出按照上面maketrans做映射后的字符串