200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Python之路-(列表 元组 字典 集合 字符串)

Python之路-(列表 元组 字典 集合 字符串)

时间:2019-11-05 15:51:55

相关推荐

Python之路-(列表 元组 字典 集合 字符串)

一、列表

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

Python有6个序列的内置类型,但最常见的是列表和元组。

序列都可以进行的操作包括索引,切片,加,乘,检查成员。

此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

列表的数据项不需要具有相同的类型

#取值、切片

names = ["zhangsan","lisi","wangwu","chenliu"]print (names)#取所有列值print (names[0],names[2]) #取值print (names[0:3]) #切片,第一个值至第三个值print (names[:3]) #0不写默认是0,切片,第一个值至第三个值print (names[-1]) #取最后的值或者倒数第一个-2就是倒数第二个print (names[-3:-1]) #倒数从左往右取值,顾首不顾尾

#添加、插入、修改、删除、查找、统计

#添加names.append("xiaqi") #在最后面添加一个值#插入names.insert(1,"caoba")#在1的后面插入一个值,一定要输入在哪个值后面插入#修改names[2] ="xiaowang" #在下标为2修改值,根据下标修改值#删除1、根据值删除names.remove("caoba") 2、根据下标删除del names[1]3、删除最后一个names.pop() #删除最后一个,输出下标就删除下标 跟这个一样 del names[-1]#查找下标print(names.index("zhangsan")) #找值的下标print(names [names.index("zhangsan")] ) # 查找下标后打印下标内容#统计print(names.count("chenliu")) #统计相同的值数量

#清空列表、翻转列表、排序列表、扩展列表

#清空列表names.clear() #翻转列表number=[1,2,3,4,5,1,1]number.reverse()print(number)[1, 1, 5, 4, 3, 2, 1]#排序列表number=[1,2,3,4,5,1,1]number.sort()#扩展列表names2 = [1,2,3,4]names.extend(names2)

#浅复制列表

names=['zhangsan','lisi','wangwu']names2 = names.copy()print(names)print(names2)['zhangsan', 'lisi', 'wangwu']['zhangsan', 'lisi', 'wangwu']names=['zhangsan','lisi','wangwu',['jonny']]names2 = names.copy()print(names)print(names2)['zhangsan', 'lisi', 'wangwu', ['jonny']]['zhangsan', 'lisi', 'wangwu', ['jonny']]names[2] = '王五'names [3] [0] = 'JONNY'print(names)print(names2) #name2 只复制第一层的列表,不会复制第二层列表,也就是子列表 ['zhangsan', 'lisi', '王五', ['JONNY']]#names 修改的是第二层,然后wangwu变成了中文也是第二层['zhangsan', 'lisi', 'wangwu', ['JONNY']] #但是names2是复制第一层,所以第一层是没有中文的王五,而jonny被改成了大写也是因为不复制,第二层也就是子列表。浅复制的三种方式:import copyperson=['name',['a',100]]p1=copy.copy(person)p2=person[:]p3=list(person)

#深复制列表

import copynames=['zhangsan','lisi','wangwu',['jonny']]names2 = copy.deepcopy(names)print(names)print(names2)names[2] = '王五'names [3] [0] = 'JONNY'print(names)print(names2)['zhangsan', 'lisi', 'wangwu', ['jonny']]['zhangsan', 'lisi', 'wangwu', ['jonny']]['zhangsan', 'lisi', '王五', ['JONNY']]['zhangsan', 'lisi', 'wangwu', ['jonny']]

二、元组

元组与列表类似,元组一旦创建即不可修改。

元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

Names=('name','jonny')

只有两种方法:

1、index 查找下标

2、count 统计

三、字典

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

#创建一个新字典,同时赋值。

c = dict.fromkeys([6,7,8],[1,{'name':'alex'},444]) print(c)c[7][1]['name']='Jack Chen' #会直接修改连接地址,所有name值全部都会修改。print(c){8: [1, {'name': 'alex'}, 444], 6: [1, {'name': 'alex'}, 444], 7: [1, {'name': 'alex'}, 444]}{8: [1, {'name': 'Jack Chen'}, 444], 6: [1, {'name': 'Jack Chen'}, 444], 7: [1, {'name': 'Jack Chen'}, 444]}

#修改、查、删除

#修改,存在则修改,不存在则创建info = {'stu1101': 'zhang san','stu1102': 'li si','stu1103': 'wang wu',}b = {'stu1101': 'xiaxia', #对应info的key stu1101值不一样,则被修改1:3, #无对应key 则新增4:2#无对应key 则新增}info.update(b) #修改info字典,对应的key有值就修改,无则新增print(info){1: 3, 'stu1101': 'xiaxia', 4: 2, 'stu1102': 'li si', 'stu1103': 'wang wu'}#查print(info.get('stu1101')) #如果没有该key 则返回None。print(info['stu1101'])#直接打印key的值#删除1del info['stu1101']#删除2info.pop('stu1104')#随机删除info.popitem() #随机删除一个元素

#多级嵌套

school = {"大学":{"": ["做夢吧","要求分数高"],"": ["醒醒吧","要求分数高"],"": ["不可能的","要求分数高"],"":["难进","要求分数高"]},"高中":{"sihui":["轻松","收费低"]},"初中":{"weizheng":["容易","免费"]}}#修改school['高中']['sihui'][1] = '毫不費力' #只打印key print(school.keys())#只打印值print(school.values())#嵌套循环打印for i in school:print(i,school[i])

#字典转换列表

#把字典转换为列表print(info.items()) #字典转列表然后再循环for k,v in info.items():print(k,v)

四、集合

集合(set)是一个无序不重复元素的序列。

基本功能是进行成员关系测试和删除重复元素。

可以使用大括号({})或者 set()函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

list_1 = [1,1,3,4,5,6]list_1 = set(list_1)#打印类型print(list_1,type(list_1)) list_2 = set([2,3,4,7,9]) print(list_2)print(list_1,list_2)#交集 .intersection print(list_1.intersection(list_2)) #取出交集#并集 .unionprint(list_1.union(list_2)) #去重合并#差集 .differenceprint(list_1.difference(list_2)) #保留list_1里面有的list_2里面没有的#子集 .issubsetlist_3 = set([1,3,4])print(list_3.issubset(list_1))#list_1 包含list_3 的所有值,则返回Tureprint(list_1.issuperset(list_3)) # 返回Flase#对称差集 .symmetric_differenceprint(list_1.symmetric_difference(list_2)) #把相互都没有的值取出来#对比是否有交集,没有为True,有则Falselist_4 = set([5,6,7])print(list_3.isdisjoint(list_4)) #没有交集为True集合符号:#交集print(list_2 & list_3)#并集print(list_2 | list_3)#求差集print(list_2 - list_3)#对称差集print(list_2 ^ list_3)#添加list_1.add(999)print(list_1)#添加多项list_4.update([888,999,111])#删除一项list_4.remove(999)#集合长度print(len(list_4))#判断是不是成员print(111 in list_4)#列表、字典、字符串、集合、元组判断是不是成员都是用inprint(list_1.pop()) #任意删除一个list_1.discard('4') #删除,没返回

五、字符串

字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。

name = "my name is jonny, 22 years old this year"#字符串首字母大写print(name.capitalize())My name is jonny, 22 years old this year#统计字符print(name.count('a')) 3#打印50个字符不够用-补充,把字符串放在中间print(name.center(50,'-'))-----my name is jonny, 22 years old this year-----#是否以year结尾print(name.endswith('year'))True#\t Tab转空格name = "my \tname is jonny, 22 years old this year"print(name.expandtabs(tabsize=30)) #Tab转30个空格my name is jonny, 22 years old this year#字符串切片print(name[name.find('name'):])#以name.find查找name的下标开始切片。name is jonny, 22 years old this year#字符串修改name = "my name is {name}, {age} years old this year"print(name.format(name='jonny',age=22))my name is jonny, 22 years old this year#使用字典进行修改name = "my name is {name}, {age} years old this year"print(name.format_map({'name':'jonny','age':22}))my name is jonny, 22 years old this year#判断是不是阿拉伯数字name = "my name is jonny, 22 years old this year"print(name.isalnum())print('123456'.isalnum()) #数字print('jonny22'.isalnum()) #字母和数字FalseTrueTrue#纯英文字符 包含大写print('Jonny'.isalpha()) True#是不是十进制print('10'.isdecimal()) True#是不是整数print('9'.isdigit()) True#是不是合法的变量名标识符print('var'.isidentifier()) True#是不是小写print('lower'.islower()) True#是不是数字print('123'.isnumeric()) True#是不是空格print(' '.isspace()) True#是不是每个首字母都是大写print('My Name Is Jonny'.istitle()) True#是不是可以打印的print('print'.isprintable()) True#是不是大写print('A'.isupper()) True#是不是以字符串开头print('Jonny'.startswith('Jon')) True#合并字符print('+'.join(['1','2','3'])) 1+2+3name = "my name is jonny 22 years old this year"#打印50字符,不够用@往右补充print(name.ljust(50,'@')) my name is jonny 22 years old this year@@@@@@@@@@@#打印50字符,不够用@往前补充print(name.rjust(50,'@')) @@@@@@@@@@@my name is jonny 22 years old this year#大写改为小写print('AAA'.lower()) aaa#小写改为大写print('aaa'.upper()) AAA#从左边去除空格回车print('\nJonny'.lstrip())Jonny#从右边去除空格回车print('Jonny\n'.rstrip())Jonny#去除左右空格print(' Jonny '.strip())Jonny #指定去除左右字符name = '****Jonny*****' print(name.strip('*')) Jonny#打印字符串对应上面的字符串p = str.maketrans('JddnooykL','123456789') print('Jonny Luo'.translate(p))16447 9u6#字符串替换print('Jonny Luo'.replace('L','l')) Jonny luo#找到最右边的值的下标print('Jonny Luo'.rfind('L')) 6#把字符串按照空格分成列表,l当作分隔符print('Jonny Luo '.split('L')) ['Jonny ', 'uo ']#按照换行符来分成列表print('Jonny \nLuo'.splitlines()) ['Jonny ', 'Luo']#大写改为小写,小写改为大写print('Jonny Luo'.swapcase()) jONNY lUO#每个首字母变大写print('jonny luo'.title()) Jonny Luo#打印50个字符,不够用0补充print('jonny'.zfill(50)) 000000000000000000000000000000000000000000000jonny

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。