成都9班-曾元 发表于 2021-11-21 21:32:34

17 python的数据结构类型和函数学习

#python中操作字符串的函数:
# str1="alsdf_ghjkal"
# print(str1.capitalize())    #Alsdf_ghjkal首字母大写
# print(str1.title())          #Alsdf_Ghjkal   首字母大写
# print(str1.split("h"))       #['alsdf_g', 'jkal']分割函数,通过某个元素进行分割,并且将分割后的字符串添加到列表中
# print(str1.split("@"))       # ['alsdf_ghjkal']如果进行分割的内容不存在,会将整个字符串添加到一个列表中
# print(str1.strip("al"))       # sdf_ghjk删除开头和结尾的某个字符
# print(str1.lstrip("al"))       # sdf_ghjkal删除开头的某个字符
# print(str1.rstrip("al"))       # alsdf_ghjk删除结尾的某个字符
# print(("*").join(str1))       # a*l*s*d*f*_*g*h*j*k*a*l通过某一元素进行连接

#startswith:判断字符串以什么开头
# str2=str1.startswith("als")
# print(str2)    #True 布尔值
# print(type(str2))   #类型是<class 'bool'>

#endswith:判断以什么结尾
# print(str1.endswith("x"))   #False

# 判断上传的文件类型是否是我们能够接受的类型:
# filename=input("请输入你的文件名:")
# if filename.endswith(".txt") is True:
#   print("上传文件成功")
# else:
#   print("上传文件格式错误")

# str9="aklkkksdkkkf_ghjkkkal@"
#count函数:用来统计字符串中元素出现的次数
# print(str9.count("k"))    # 10

#find函数:在字符串中查找某个元素的索引位
# print(str9.find("a"))    # 0
# print(str9.rfind("a"))    # 19 最后一次出现在字符串中的索引位置

#replace函数:用来替换字符串中的某个元素
# 第一个参数:需要替换的值;第二个参数:需要替换成什么;
# 第三个参数:从左往右替换几次就填写几,如果不给就默认全部替换;
# print(str9.replace("k",""))    # alsdf_ghjal@
# print(str9.replace("k","",2))    # alkksdkkkf_ghjkkkal@

#lower函数:将字符串中的内容全部转换为小写
# print(str9.lower())

#upper函数:将字符串中的内容全部转换为大写
# print(str9.upper())

# print(str1.isdigit())   #判断字符串中的内容全部为数字,为真则True,为假则False
# print(str1.isalpha())   #判断字符串中的内容全部为字母,为真则True,为假则False
# print(str1.isupper())   #判断字符串中的内容全部为大写,为真则True,为假则False
# print(str1.islower())   #判断字符串中的内容全部为小写,为真则True,为假则False
# print(str1.isalnum())   #判断字符串中的内容仅为字母和数字结合,为真则True,为假则False
# print(str1.istitle())   #判断字符串的开头是否为大写,为真则True,为假则False

#python中的列表
#定义列表的第一种方式
# list1=
# print(type(list1))
# print(list1)
# print(list1)   #中国四川   列表也可以用索引进行取值
#定义列表的第二种方式
# str1="chengdudcs"
# list1=list(str1)#通过list函数,将str1这个字符串转换为list列表
# print(list1)   # ['c', 'h', 'e', 'n', 'g', 'd', 'u', 'd', 'c', 's']

# num1=2          #<class 'int'>
# num2=str(num1)   #<class 'str'>
# print(type(num2))

#定义列表的第三种方式通过索引给列表进行赋值
# list1=
# list1="成都"
# print(list1)    #

# 列表中能够包含的元素类型:整型,字符串型,列表,元组,字典,集合
# list1=]
# print(list1)   #]
# print(list1)#

# list2=list1   #代表一个新的list2
# print(list2)   # 四川

# 列表切片:
#通过切片进行取值
# print(list1[:2:1])    #
#通过切片进行赋值
#切片的位数比需要赋值的位数多,会将整个切片的内容换为赋值的内容
#切片的位数刚好等于需要赋值的位数,按索引位依次赋值
#切片的位数小于赋值的位数,会将整个赋值的值按照索引位进行插入
# list1="小王"
# print(list1)    # ['小王', 'dcs', '成都', ]
# list1[:2:1]="内江"
# print(list1)      # ['内', '江', '成都', ]
# list1[:2:1]="内江资中"
# print(list1)   #['内', '江', '资', '中', '成都', ]
# list1[:2:1]="内"
# print(list1)    # ['内', '成都', ]

#列表中的函数:
# list1=
# append函数:向列表中的末尾添加一个元素 英译:附加
# list1.append("多测师")
# print(list1)

# extend函数:连接两个列表英译:延伸、扩大
# list1=
# list2=
# list1.extend(list2)#将list2中的元素添加到list1中
# print(list1)    #
# print(list2)    #

# 连接字符串和列表
# str1="hello"
# list1.extend(str1)   #相当于先将str1转为列表,然后将列表中的内容添加到list1中
# print(list1)    #

#insert:可以指定索引位进行添加到列表中
# list1=
# list1.insert(0,"牛逼")#在list1索引位为0的地方进行插入,后面的内容依次往后移动
# print(list1)#['牛逼', 1, 2, '小王', 'zhongguo', '双流']
# list1="牛逼"#替换掉list1索引位为0的地方

# remove函数:移除列表中的某个元素
# list1=
# list1.remove("zhongguo")
# print(list1)#
# list1.remove("2")   #指定移除某个元素,如果元素不存在就会报错
# print(list1)# ValueError: list.remove(x): x not in list

# list1=
# # list1.remove(2)#这是一个动作,所以不能进行输出
# # list2=list1
# # print(list2)

#del函数:删除列表中的指定元素
# list1=
# del list1#通过索引进行删除
# print(list1)#
# del list1#通过切片进行删除
# print(list1)

#index:根据列表中的元素值,取出对应的索引位
# list1=
#从左往右查找
# print(list1.index("小王"))#2从左往右默认查找第一个值对应的索引位
# print(list1.index("小王",3,6)) #4指定查找的索引位,是“小王”,并且索引位置在3~6之间

#sort函数:对于列表进行排序,进行升序排序 sort英译种类,分类,排序
# list1=
# list1.sort()
# print(list1)   #

# #如果需要进行排序的内容是字符串,则会根据asc码进行排序 ,阿斯科码
#asc码的排列顺序是数字0~9,A~Z,a~z,先数字开头123...,再大写字母开头ABC..,再小写字母开头abc...
# list2=["20","19","36","2","8","17","6"]
# list2.sort()
# print(list2)   #['17', '19', '2', '20', '36', '6', '8']

# list2=["20","19","36","2","8","17","6","ADK","UY","ssd","qie"]
# list2.sort()
# print(list2)#['17', '19', '2', '20', '36', '6', '8', 'ADK', 'UY', 'qie', 'ssd']

# 如果列表中既有整型,又有字符串,不能排序,会报错
# str1=20
# str2=30
# print(str1+str2)# 整型与整型可相加,等于50
# str3="20"
# str4="30"
# print(str3+str4)# 字符串与字符串可相加,等于拼接为2030
# print(str1+str4)# TypeError: unsupported operand type(s) for +: 'int' and 'str'

#sorted:列表的排序函数,需要添加两个参数,一个代表需要排列的列表,第二个代表是否需要反转
# reverse=True代表降序,reverse=False代表升序,如果不加reverse,默认为升序 reverse英译颠倒,反转;reserve英译预定储备保护
# list1=
# print(sorted(list1,reverse=True))#
# print(sorted(list1,reverse=False))#
# print(sorted(list1)) #

#reverse函数:实现列表的反转输出
# list1=
# list1.reverse()
# print(list1)

#pop函数:删除,移除。官方解释:随机删除一个列表中的元素。但是一般默认删除最后一个。
# list1=
# print(list1.pop())#随机删除一个列表中的元素,并且返回到函数的使用处,打印出“dcs”
# print(list1)   #

'''
元组:tuple,是python中常用的一种数据结构,元组由不同的元素组成,
每个元素可以存储不同类型的数据,如字符串、数字、甚至元组。
元组是“写保护”的,即元组中元素作为一个整体,创建后不能再做任何修改操作
如果元组中的元素只有一个,需要用逗号表示元组
'''
# tuple1=(1,2,3,4)
# print(type(tuple1))#<class 'tuple'>
# tuple1=(1)
# print(type(tuple1))#<class 'int'>
# tuple1=(1,)
# print(type(tuple1))#<class 'tuple'>

#将元组转换为列表:
# tuple1=(1,2,3,"多测师")
# list1=list(tuple1)
# print(list1)    #
# print(type(list1))#<class 'list'>

#将列表转换为元组:
# list1=
# tuple1=tuple(list1)
# print(tuple1)    #(1, 2, 3, '多测师')
# print(type(tuple1))#<class 'tuple'>

#元组进行索引取值:
# tuple1=(1,2,3,"多测师")
# tuple1="成都"
# print(tuple1)   # TypeError: 'tuple' object does not support item assignment元组不支持修改
#如果需要强行修改元组的内容,可以先将元组转为列表,再修改,修改完成后再转为元组
# tuple1=(1,2,3,"多测师")
# list1=list(tuple1)
# list1="成都"
# tuple2=tuple(list1)
# print(tuple2)# ('成都', 2, 3, '多测师')
#修改元组的例外情况:如果元组中的元素,是一个列表,可以通过元组找到列表,并且对列表里面的值进行修改
# tuple1=(1,2,3,"多测师",["dcs","9班","厉害"])
# tuple1="牛逼"
# print(tuple1)#( 1, 2, 3, '多测师', ['dcs', '9班', '牛逼'])
#往元组中的列表进行添加值
# tuple1=(1,2,3,"多测师",["dcs","9班","厉害"])
# tuple1.append("leshan")
# print(tuple1)   # (1, 2, 3, '多测师', ['dcs', '9班', '厉害', 'leshan'])
#往元组中的列表进行添加值
# tuple1=(1,2,3,["dcs","9班","厉害"],"多测师")
# tuple1.append("7")
# print(tuple1)# (1, 2, 3, ['dcs', '9班', '厉害', '7'], '多测师')

'''
元组和列表的区别?
相同:
1、作为一个有序的容器对象,可以装任何的数据类型
2、可以根据索引或者切片进行取值
3、可以迭代:可以进行for循环
不同:
1、列表可以修改元素
2、元组不可以修改元素
'''
# 遍历:
# list1=
# tuple1=("1","2",4,5,6,7,8,9)
# for i in list1:
#print(i)

# for j in tuple1:
#      print(j)

# python中的字典:字典是无序的、可变的,并且以键(key)值(value)对的形式所存在的
#定义字典的第一种方式
# dict1={"name":"小刘","age":"18","sex":"男"}
# print(dict1)#{'name': '小刘', 'age': '18', 'sex': '男'}
# print(type(dict1))#<class 'dict'>

#定义字典的第二种方式:如果需要列表转换为字典,需要满足以下格式,
# 列表中或元组中再包含元组,元组以键和值的方式成对存在
# [("name","xiaoliu"),("age","18"),("sex","nan")]
# list1=[("name","xiaoliu"),("age","18"),("sex","nan")]
# dict1=dict(list1)
# print(dict1)   #{'name': 'xiaoliu', 'age': '18', 'sex': 'nan'}
# print(type(dict1)) # <class 'dict'>

# tuple1=(("name","xiaoliu"),("age","18"),("sex","nan"))
# dict1=dict(tuple1)
# print(dict1)# {'name': 'xiaoliu', 'age': '18', 'sex': 'nan'}

#字典中的常用函数:字典中的键名不能重复
# dict1={"name":"小刘","age":"18","sex":"男"}
# dict1["phone"]=18688881111   #给字典加上一个键值对,键名必须是字符串类型
# print(dict1) # {'name': '小刘', 'age': '18', 'sex': '男', 'phone': 18688881111}
# dict1["name"]="小王"   #如果键名存在,对应的值会被更新覆盖
# print(dict1)#{'name': '小王', 'age': '18', 'sex': '男'}

# setdefault函数:给字典添加上一个键值对
# dict1={"name":"小刘","age":"18","sex":"男"}
# dict1.setdefault("name",18122224444)#如果键名存在,那么此次操作无效
# print(dict1)#{'name': '小刘', 'age': '18', 'sex': '男'}

# dict1.setdefault("phone",18122224444)
# print(dict1) # {'name': '小刘', 'age': '18', 'sex': '男', 'phone': 18122224444}

#使用for循环取出字典中的键
#第一种:
# dict1={"name":"小刘","age":"18","sex":"男"}
# for i in dict1:      #遍历整个字典,会取出字典中所有的键
#   print(i)   # name/age/sex#每一个i就是每一个键名
#第二种:
# print(dict1.keys())   # dict_keys(['name', 'age', 'sex'])   # 可以取出字典中的键
# print(type(dict1.keys()))# <class 'dict_keys'>

# 取出字典中的值
#第一种:
# dict1={"name":"小刘","age":"18","sex":"男"}
# print(dict1.values())# dict_values(['小刘', '18', '男'])   #取出字典中所有的值
#第二种:
# print(dict1["name"])#小刘    #根据字典对应的键取出对应的值
# for i in dict1.keys():   #遍历出字典所有的键名
#   print(dict1)# 小刘/18/男#根据键名取出所有的值

# dict1={"name":"小刘","age":"18","sex":"男"}
# del dict1["name"]#删除对应的键值对
# print(dict1)# {'age': '18', 'sex': '男'}

# dict1={"name":"小刘","age":"18","sex":"男"}
# del dict1 #删除整个字典
# print(dict1) # 报错,字典不存在

#取出字典中整个键值对:
#第一种
# dict1={"name":"小刘","age":"18","sex":"男"}
# for i in dict1:
#   print(i,dict1)
#第二种
# for k,v in dict1.items():
#   print(k,v)

# pop函数:删除字典中的指定键值对
# dict1={"name":"小刘","age":"18","sex":"男"}
# print(dict1.pop("name")) # 小刘   删除字典中的键值对,并且返回键对应的值
# print(dict1)#{'age': '18', 'sex': '男'}

# clear函数:清空字典里面所有的键值对
# dict1={"name":"小刘","age":"18","sex":"男"}
# dict1.clear()
# print(dict1)   # {}

# get函数:取出字典中键所对应的值
# dict1={"name":"小刘","age":"18","sex":"男"}
# print(dict1["name"])#小刘如果键名不存在,会报错
# print(dict1.get("name"))#小刘   如果键名不存在,不会报错,会返回一个none

#fromkeys函数:用来初始化一个字典
# (新给一个键,如果再给键值,显示所给键值,如果没给键值,会使用初始化设置的默认值)
# print({}.fromkeys(["name","sex"],"xiaoliu"))
# dict1={}.fromkeys(["name","sex"],"xiaoliu")

# popitem函数:随机删除字典中的键值对,一般删除最后一个
# dict1={"name":"小刘","age":"18","sex":"男"}
# print(dict1.popitem()) # ('sex', '男')popitem函数删除后,键值对会返回函数的调用处
# print(dict1) #{'name': '小刘', 'age': '18'}

#contains函数:是用来判断字典中是否存在某个键名
# dict1={"name":"小刘","age":"18","sex":"男"}
# print(dict1.__contains__("name"))# True
# print(dict1.__contains__("phone"))# False

#update函数:更新字典
# dict1={"name":"小刘","age":"18","sex":"男"}
# dict2={"phone":18622227777}
# dict1.update(dict2) # 将dict2中的键值对,添加到dict1中,如果有键名相同的,则值会被更新
# print(dict1) # {'name': '小刘', 'age': '18', 'sex': '男', 'phone': 18622227777}

#集合
#1、可变集合:set
# list1=
# set1=set(list1)# 将列表进行去重,并且转换为集合,随机换序
# print(set1)# {2, 5, 6, 8, 'dcs', 11, 'SSJD'}

# set1.add("四川") # 添加一个元素,添加的位置随机
# print(set1) # {2, '四川', 5, 6, 8, 11, 'SSJD', 'dcs'}

# set1.remove("dcs") # 移除指定内容
# print(set1)# {2, 5, 6, 'SSJD', 8, 11}

# set1.pop() # 删除第一个
# print(set1)

# set1.clear() # 清除集合
# print(set1)   # set()

#2、不可变集合:frozenset
# list1=
# frozenset1=frozenset(list1)
# print(frozenset1)
# b=frozenset1.copy()# 复制一份
# print(b)

页: [1]
查看完整版本: 17 python的数据结构类型和函数学习