六大数据类型--容器类型数据(str,list,tuple,set,dict)
接上一章
2.str字符串类型
""" 用引号引起来的就是字符串 """
# 转义字符 : \ + 某个字符
(1) 将有意义的字符变得无意义
(2) 将无意义的字符变得有意义
\n , \r\n : 换行
\t : tab缩进(水平制表符)[一般来说,一个锁进是4个空格的距离
\r : 将后面的字符直接拉到当前行行首
# (1) 单引号引起来的字符串
strvar = '你好'
# (2) 双引号引起来的字符串
# 将无意义的字符变得有意义
strvar = "文哥是这个世界上,\n我认为最帅的男人"
strvar = "文哥是这个世界上,\r\n我认为最帅的男人"
strvar = "文哥是这个世界上,我认\t为最 帅的男人"
strvar = "文哥是这个世界上,\r我认为最帅的男人"
strvar = "文哥是这个世界上,\n我认为\r最帅的男人"
# 将有意义的字符变得无意义
strvar = "文哥是这个世界上,浑身冒\"金光\"的男人"
# (3) 三引号引起来的字符串 ''' """(支持跨行的效果)
strvar = '''
我感觉我走错了房间,
我的同学是'祖安'服务器请来的"演说家"
'''
格式化字符串
# %d 整型占位符
strvar = "某人学习容易走神,买了%d个风油精,提神醒脑" % (5)
print(strvar)
# %2d 占两位 原字符串默认居右
strvar = "今天%d岁" % (3)
print(strvar)
strvar = "今天%2d岁" % (3)
print(strvar)
# %-2d 占两位 原字符串默认居左
strvar = "今天%-2d岁" % (30000)
print(strvar)
# %f 浮点型占位符
strvar = "张三一个月开了%f工资" % (9.9)
print(strvar)
# %.2f 小数点保留2位
strvar = "张三一个月开了%.2f工资" % (9.9)
print(strvar)
# %f 存在四舍五入的情况
strvar = "张三一个月开了%.1f工资" % (9.876542342)
print(strvar)
# %s 字符串占位符
strvar = "%s" % ("同学们都有祖安人民的特质")
print(strvar)
# 综合案例
strvar = "%s看好了一辆车,特斯拉model x,买了%d辆,花了%.1f元" % ("李四",10,9.9)
# strvar = "%s看好了一辆车,特斯拉model x,买了%d辆,花了%.1f元" % ("李四",10,9.9)
print(strvar)
# 可以全部使用%s占位符进行取代
strvar = "%s看好了一辆车,特斯拉model x,买了%s辆,花了%s元" % ("李四",10,9.912345)
print(strvar)
3.list列表类型
"""特点: 可获取,可修改,有序"""
# 正向下标索引 0 1 2 3 4 listvar = [100,19.123,True,1+12j,"张三"] # 逆向下标索引 -5 -4 -3 -2 -1
#获取其中的值
res = listvar[2]
res = listvar[-3]
#len 获取容器类型数据的长度(元素的总个数)
res = len(listvar)
4.tuple元组类型
"""特点: 可获取,不可修改,有序"""
# 定义一个普通元组 # 正向下标索引 0 1 2 3 tuplevar = ("明浩","徐艳伟","李志辉","马春陪") # 逆向下标索引 -4 -3 -2 -1 # 1.获取元组当中的元素 res = tuplevar[1] res = tuplevar[-1] print(res) # 2.可以修改元组当中的值? 不行! # tuplevar[0] = "王金刚" error # 3.判定元组的类型 """逗号才是区分是否是元组的标识符""" tuplevar = (123,) tuplevar = 123, print(tuplevar , type(tuplevar))
5.set集合类型
""" 特点: 无序,自动去重"""(用来做交叉并补)
# 定义一个集合 setvar = {"金城武","王俊凯","喻文波","王文"} # 1.集合无序 # 获取集合中的元素可以么? 不可以! # res = setvar[3] error # 修改集合中的元素可以么? 不可以! # setvar[0] = "123" error # 2.自动去重 setvar = {"金城武","王俊凯","喻文波","王文","王文","王文","王文"} print(setvar) # 3.定义一个空集合 # setvar = {} setvar = set() print(setvar , type(setvar))
6.dict字典类型
"""
特点: 键值对存储的数据,表面上有序,实际上无序
语法: { 键1:值1 , 键2:值2 ..... }
"""
# 1.定义一个空字典 dictvar = {} print(dictvar , type(dictvar)) # 2.定义一个空字典 dictvar = {"智多星":"吴用","花和尚":"鲁智深","浪里白条":"张顺","母夜叉":"孙二娘","回手掏":"大司马"} # 3.获取字典中的值 res = dictvar["回手掏"] print(res) # 4.修改字典当中的值 dictvar["回手掏"] = "宋云杰" print(dictvar) # ### 字典的键 和 集合中的值 对数据类型有要求 dictvar = {333:"aaa",False:"bbb",9+3j:"ccc",3.14:"ddd",(1,2,3,4):"fff","中文":"123","top":"王文"} print(dictvar)
字典的键 和 集合中的值 数据类型的要求必须是如下几种:
如下类型可以: 不可变数据(可哈希的数据类型)
Number(int , float , bool ,complex) , str , tuple
不允许的类型: 可变数据(不可哈希的数据类型)
list , set , dict
但凡提到哈希算法(hash),都是典型的无序特征
目的: 为了更加均匀的把数据分配到内存里,底层用的算法类似于取模.
python3.6版本之后,对字典做了优化,存储数据的时候用哈希算法
但是在拿出数据的时候,重新按照定义字典时的顺序进行重新排序
所以看起来有序,实际上无序

浙公网安备 33010602011771号