您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:python中必会的四大高级数据类型(字符,元组,列表,字典)

51自学网 2021-10-30 22:41:31
  python
这篇教程python中必会的四大高级数据类型(字符,元组,列表,字典)写得很实用,希望能帮到您。

一. 字符串

生活中我们经常坐大巴车,每个座位一个编号,一个位置对应一个下标。 字符串中也有下标,要取出字符串中的部分数据,可以用下标取。

img

  • python中使用切片截取字符串其中的一段内容,切片截取的内容不包含结束下标对应的数据。
  • 切片使用语法:[起始下标:结束下标:步长]步长指的是隔几个下标获取一个字符。

注意:下标会越界,切片不会

常用函数

在这里插入图片描述

练习

Test='rodma  'print(type(Test))print('Test的一个字符串%s'%Test[0])#跟数组差不多#循环输出for i in Test:     print(i,end=" ")#也可以用‘ 'print('/n')# count():统计出现的次数print(Test.count('r'))# join():循环取出所有值用xx去连str='-'print(str.join(Test))#去除两边空格strip(),去除右边空格:lstrip(),去除右边空格:rstripprint(Test.strip())#复制字符串,id函数可以查看对象的内存地址print('Test的内存地址%d'%id(Test))b=Test #在此只是把a对象的内存地址赋给了bprint('Test的内存地址%d'%id(Test))print(b)#定义一个数接下来用datastr='i love Python'#find函数:可以查找目标对象在序列对象中的为值,如果没找到就返回-1print(datastr.find('M'))# index()函数:检测字符串中是否包含子字符串 返回的是下标值print(datastr.index('i'))#find 和 index 的区别:如果index没有找到对象就会报错,find输出-1,找到输出0#starswith()函数:判断开头,如果是就true#endswith()函数是判断结尾print(datastr.startswith('i'))# capitalize():首字母转换为大写# isalnum():判断是否是字母和数字,全部是字母就输出true,有空格也不行# isalpha() :判断是否是字母# isdigit():判断是否全部是数字# swapcase():大写变小写,小写变大写# title() :把每个单词的首字母变成大写# lower():装换为小写。# upper():转换为大写a='tsx'print(type(a))print(datastr.capitalize())print(a.isalnum())print(datastr.isalpha())print('abc123'.isdigit())print(datastr.swapcase())print(datastr.title())print(datastr.lower())print(datastr.upper())# 切片:是指截取字符串中的其中一段内容。# 切片使用语法:[起始下标:结束下标:步长]# 切片截取的内容不包含结束下标对应的数据,步长指的是隔几个下标获取一个字符。# slice [start:end:step] 左闭右开  start<=value<end 范围# 下标会越界,切片不会#记住左闭右开的原则# 定义一个对象strmgs='Never give up'# 1——8之间的数据print(strmgs[1:8])# 第3个字符到最后print(strmgs[2:])# 第1个字符到第3个    温馨提示:记住左闭右开的原则print(strmgs[:3])# 步长是什么?比如定义2,就是从当前开始到2个下标获取一个字符,在通俗点就是隔一个获取下一个print(strmgs[::2])# 负方向是倒序输出,如果步长选为-1,则反方向输出print(strmgs[::-1])# 同理,如果步长是-2,则反方向隔两个下标获取一个字符print(strmgs[::-2])# 共有方法有三种 + * in# +:两个对象相加操作,会合并两个对象# *:对象自身按指定次数进行 + 操作# in:判断指定元素是否存在于对象中,输出的是bool值strA='I love'strB='Python'print(strA+strB)print(strA*3)print('I' in strA)'''输出<class 'str'>Test的一个字符串rr o d m a     1r-o-d-m-a- - rodmaTest的内存地址1863907131504Test的内存地址1863907131504rodma  -10True<class 'str'>I love pythonTrueFalseFalseI LOVE pYTHONI Love Pythoni love pythonI LOVE PYTHONever giver give upNevNvrgv ppu evig reveNp vgrvNI lovePythonI loveI loveI loveTrue'''

二. 列表

list是一种有序的集合[],可以随时添加和删除其中的元素。

列表的下标取值/切片/是否越界与字符串一致,区别就是列表是获取元素。

在这里插入图片描述

练习

li=[] # 空列表li=[1,2,3,4,'python',True]print(type(li))# #len函数可以获取到列表对象中的数据个数print(len(li))# append();在列表后面追加元素# count(): 统计元素出现的次数# extend(): 扩展,相当于批量添加# index(): 获取指定元素索引号# insert(): 在指定位置插入# pop(): 删除后面一个元素# remove():移除左边找到的第一个元素# reverse(): 反转列表# sort():列表排序 reverse=True为倒序listA=['abcd',785,12.23,'qiuzhi',True]# print('--------------增加-----------------------')print('追加之前',listA)listA.append(['fff','ddd']) #追加操作listA.append(8888)print('追加之后',listA)listA.insert(1,'这是我刚插入的数据') #插入操作 需要执行一个位置插入print(listA)rsData=list(range(10)) #强制转换为list对象print(type(rsData))listA.extend(rsData) #拓展  等于批量添加listA.extend([11,22,33,44])print(listA)# print('-----------------修改------------------------')# print('修改之前',listA)# listA[0]=333.6# print('修改之后',listA)listB=list(range(10,50))print(type(listB))print('------------删除list数据项------------------')print(listB)# del listB[0] #删除列表中第一个元素# del listB[1:3] #批量删除多项数据 slice# listB.remove(20) #移除指定的元素  参数是具体的数据值listB.pop(1) #移除制定的项  参数是索引值print(listB)#beg -- 开始索引,默认为0。#end -- 结束索引,默认为字符串的长度。print(listB.index(19))  #返回的是一个索引下标# 查找,跟元祖有点不一样,这是左开右闭print(type(listA))print(listA) #输出完整的列表print(listA[0]) #输出第一个元素print(listA[1:3]) #从第二个开始到第三个元素print(listA[2:]) #从第三个元素开始到最后所有的元素print(listA[::-1]) #负数从右像左开始输出print(listA*3) #输出多次列表中的数据【复制】a=[21,45,66,78]b=[1,2]def add100(x):    i= 0    for item in x:        x[i]=item+100        i+=1        pass    return x    passprint(add100(b))def add100(x):    x+=100    return xlist2=list(map(add100,a))print(list2)a=[21,45,66,78]print(list(map(lambda x:x+100,a)))def Old(x):    if x>50:        return x    passprint(list(filter(Old,a)))'''输出<class 'list'>6追加之前 ['abcd', 785, 12.23, 'qiuzhi', True]追加之后 ['abcd', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888]['abcd', '这是我刚插入的数据', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888]<class 'list'>['abcd', '这是我刚插入的数据', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44]<class 'list'>------------删除list数据项------------------[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49][10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]8<class 'list'>['abcd', '这是我刚插入的数据', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44]abcd['这是我刚插入的数据', 785][785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44][44, 33, 22, 11, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 8888, ['fff', 'ddd'], True, 'qiuzhi', 12.23, 785, '这是我刚插入的数据', 'abcd']['abcd', '这是我刚插入的数据', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 'abcd', '这是我刚插入的数据', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 'abcd', '这是我刚插入的数据', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44][101, 102][121, 145, 166, 178][121, 145, 166, 178][66, 78]'''

三. 元组

  1. 元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,元组也是通过下标进行访问
  2. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
  3. 元组的内置方法:

count:统计元素在元组中出现的次数
index :查找指定元素在元组中的下标索引

练习

#空元组tupleA=()print(type(tupleA))#元组也可以用for语句查询tupleA=(1,2,3,'cd','a')for item in tupleA:    print(item,end=' ')# 元组也可以使用切片,左闭右开print(tupleA[-2:-1:])#倒着取下标 为-2 到 -1 区间的#假设元组中放入队列tupleA=(1,2,3,'cd','a',[11,22,33])print(tupleA)#可以对队列的值进行修改(原本元组是不可以修改的)print(type(tupleA[5]))tupleA[5][0]=5500print(tupleA)tupleA[5].append('chen')print(tupleA)'''输出<class 'tuple'>1 2 3 cd a ('cd',)(1, 2, 3, 'cd', 'a', [11, 22, 33])<class 'list'>(1, 2, 3, 'cd', 'a', [5500, 22, 33])(1, 2, 3, 'cd', 'a', [5500, 22, 33, 'chen'])'''

四. 字典

  • 字典是Python的中重要的一种数据类型,可以存储任意对像。
  • 字典是以键值对的形式创建的{'key':'value'}利用大括号包裹着。
  • 访问值的安全方式get方法,在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值

注意:

字典的键(key)不能重复,值(value)可以重复。
字典的键(key)只能是不可变类型,如数字,字符串,元组。

常用方法

在这里插入图片描述

练习

# 空字典dictA={}print(type(dictA))# 如何添加字典数据? key:valuedictA['name']='陈运智'dictA['age']=30print(dictA)# 批量添加dictA={"pro":'艺术','shcool':'北京电影学院','age':30,'pos':'xueshen'}print(dictA)# 通过键位修改值dictA['pro']='学生'print(dictA)# 添加更多数据dictA.update({'name':'陈运智'})print(dictA)# 获取所有键和值print(dictA.keys(),dictA.values())print(dictA.items())for key,value in dictA.items():   print('%s==%s'%(key,value))# 指定键删除del dictA['name']print(dictA)# 按照key和value排序print(sorted(dictA.keys()))#print(sorted(dictA.values()))#拷贝, copy,deepcopy 会拷贝复杂类型,如 list、dictimport copydictB=copy.copy(dictA)#浅拷贝dictc=copy.deepcopy(dictA)#深拷贝print(id(dictc))print(id(dictA))print(id(dictB))dictB['age']='20'dictc['age']='20'print(dictB)print(dictc)print(dictA)print(type(dictB))print(type(dictc))

以上就是python中必会的四大高级数据类型(字符,元组,列表,字典)的详细内容,更多关于python数据类型的资料请关注51zixue.net其它相关文章!


教你怎么用python删除相似度高的图片
python property的使用技巧分享
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。