Python_Number类及容器类基本数据类型

一、前言

今天写下关于python标准数据类型的东西,没事的时候,常回来看看。

二、六大标准数据类型

Number :intfloatboolcomplex)
容器类型 : str " "list [ ]tuple ( )set { }dict { }

python的六个数据类型中:

不可变数据类型(3个):Number(intfloatboolcomplex)、 strtuple
可变数据类型(3个): listdictset

如何获取一个值的类型和内存地址?

res = 255
print(type(res), id(res))

# 判断一个值的数据类型
>>> res = 255
>>> isinstance = (res, int)

# type 和 isinstance 有什么区别呢?

1、Number 数字类型

>>> a, b, c, d = 20, 3.14, True, 5+4j
>>> type(a), type(b), type(c), type(d)
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

1. int 整型 (正整数、0、负整数)

# 二进制整型
intvar = 0b10
print(intvar, type(intvar), id(intvar))

# 八进制整型
intvar = 0o22724
print(intvar, type(intvar), id(intvar))

# 十六进制整型
intvar = 0x8abcdef
print(intvar, type(intvar), id(intvar))

2. float 浮点型 (小数)

浮点型有两种表达方式:

# 1.小数
floatvar = 3.14

# 2.科学计数法
>>> floatvar = 5.1e4  # 代表将小数点右移4位
>>> floatvar
51000.0

3. bool 布尔类型

主要用于各种逻辑判断

boolvar = True
boolvar = False
print(boolvar)

4. complex 复数类型

complex 也有两种表达方式:

complexvar = 3-10j
complexvar1 = complex(3, -10)
print(complexvar, complexvar1) 
"""
complex 由实数和虚数构成,如 5+3j, j是不能乱写的,那么什么是 j 呢?
如果有一个数的平方等于 -1,那么这个数就是 j
complex 主要用于科学计算中,表达了一个非常高精度的类型
"""

2、str 字符串类型

字符串用 ’ ’ 或 " " 括起来,同时使用 \ (反斜杠)转义特殊字符

strvar = ""		# 空字符串,空格也是字符
# 字符串的拼接 只能进行相加或相乘的运算 注意双方都必须是字符串
>>> strvar1 = "想做你的太阳"
>>> strvar2 = "你的太阳"
>>> strvar1 + strvar2		# '想做你的太阳你的太阳'	
>>> strvar1 * 3				# '想做你的太阳想做你的太阳想做你的太阳'

# 转义字符 	\ + 字符
# 不管原先咋样,转完肯定不一样了
# 常见的转义字符有这么几种:
# \n, \r\n → Enter
# \t → Tab 缩进,水平制表符,4空格距离
# \r 将\r后面的字符直接拉到**当前行**行首,注意,是当前行呦。

strvar = "你好啊\n我还行"		# 两行
strvar = "你\t好啊,我还行"	# 你    好啊,我还行
strvar = "你好啊\r我还行"		# 只打印 我还行
strvar = "你\n好\r我还行"		# 打印 你 我还行
strvar = "哎呀\"我\"去"		# 哎呀"我"去

print(strvar)

元字符串 原型化输出字符串

>>> strvar = r"E:\python30\day2"
>>> print(strvar)
E:\python30\day2

格式化

"""
语法: "字符串" % (值1,值2,值3)
%d  整型占位符   %2d  %-2d 分别是什么意思?
%f  浮点型占位符  %.2f  %.1f  分别是什么意思? 这是会四舍五入的
%s  字符串占位符
"""

>>> strvar = "%s今天打了%s,局子里拘了%d天,最后还赔了%.2f块钱,真的%s" % ("老李", "老王", 15, 250, "血亏")
>>> strvar
老李今天打了老王,局子里拘了15天,最后还赔了250.00块钱,真的血亏

3、list 列表类型

list、tuple、str均可获取且有序,但仅有list可变。

# 1.列表的索引切片,从0开始,顾头不顾尾
# list[start:end:step]		step默认为1
lst = ["安度因", "古尔丹", "萨尔", "吉安娜", "瓦莉拉", "泰兰德"]
res = lst[-1]		# 泰兰德
res1 = lst[1:3]		# ['古尔丹', '萨尔']
res2 = lst[:4]		# ['安度因', '古尔丹', '萨尔', '吉安娜']
res3 = lst[1:]		# ['古尔丹', '萨尔', '吉安娜', '瓦莉拉', '泰兰德']
res4 = lst[:]		# ['安度因', '古尔丹', '萨尔', '吉安娜', '瓦莉拉', '泰兰德']
res5 = lst[::2]		# ['安度因', '萨尔', '瓦莉拉']
res6 = lst[::-1]	# ['泰兰德', '瓦莉拉', '吉安娜', '萨尔', '古尔丹', '安度因']     列表翻转
lst.reverse()		# 列表翻转
print(lst)
print(res)

# 2.获取列表长度 len()  返回对象(字符、列表、元组等)长度或项目个数。
# 实参可以是序列(如 string、bytes、tuple、list 或 range 等)或集合(如 dictionary、set 或 frozen set 等)
>>> lst = ["安度因", "古尔丹", "萨尔", "吉安娜", "瓦莉拉", "泰兰德"]
>>> len(lst)
6

>>> str = "abcdefghigklmn"
>>> len(str)
14

# 3.列表的增删改查
>>> lst = ["安度因", "古尔丹", "萨尔", "吉安娜", "瓦莉拉", "泰兰德"]
>>> lst1 = ["卡德加"]
>>> lst.insert(3, "加尔鲁什")	# 插入到任意位置
>>> lst.append("乌瑟尔")		  # 追加到列表尾部
>>> lst[5] = "雷克萨"		# 通过下标进行修改
>>> lst.remove["古尔丹"]		# 删除
>>> "玛法里奥" in lst		# 判断元素是否在列表
>>> lst.extend(lst1)		# extend()方法 列表合并
>>> lst.insert(2, ["雷诺", "布莱恩"])		# 列表嵌套
>>> lst.pop()		# 默认删除最后一个元素,并返回被删除的值
>>> lst.pop(1)		# pop(),定点删除
>>> del lst[4]		# 删除
>>> lst.clear()		# 清空lst
>>> lst.index("萨尔")		# lst中查询"萨尔",返回从左开始匹配到的第一个"萨尔"的索引
>>> lst.count("古尔丹")		# 返回"古尔丹"的个数
>>> lst.sort()		# sort()列表排序
>>> for i in lst:	# 列表循环 for循环

4、tuple 元组类型

元组与列表相似,写在( )里,元组里的元素不可修改,元素间用逗号隔开

# 元组虽然不可改变,但是里面却可以包含可变的数据类型,如列表
teplevar = (1, 2, 3, ["bob", "sar"])
# 构造空元组或只有一个元素的元组,有两个注意点:
tuplevar = ()
tuplevar = (2, )	# 一个元素,需要在后面加个逗号
tuplevar = 1, 		# 为什么这个还是元组,因为逗号是元组的标识符

# 基本操作: 索引、切片、循环、求长度、判断包含

5、set 集合类型

# 集合的特性:(作用:较差并补)
1.集合里不能存listdict等可变类型,可存strtuple、Number等不可变的类型;
2.天生去重;
3.无序,不能像列表一样通过索引来获取元素
# 集合的增删改查
setvar = {}		# 定义一个空集合
setvar = set()	

setvar = {"火车王", "玛里苟斯", "罗斯"}	# 增
setvar.add("发财")

setvar.discard("罗斯")		# 删除	
setvar.pop()				# 随机删
setvar.remove("火车王")

"玛里苟斯" in setvar			# 查

# 帮列表去重
lst1 = list(set(lit))

6、dict 字典类型

# dict 的语法特点:键值对存储的数据,查询速度快,表面上有序,实际上无序。key是唯一的,value是可变的
# dictvar = {key1:value1, key2:value2, key3:value3, ...}  		推荐使用命名的字符串作为dict中的key
# 为什么字典和集合都是无序的呢?		哈希算法的无序特征,字典和集合底层采用了哈希算法
"""
于此,字典的键和集合的值,有数据类型上的要求:
必须得是不可变的数据类型,不可变的数据才可哈希(Number、str、tuple)
"""
# 那为什么字典打印了很多遍,顺序也都一样呢?		
# 因为python3.6版本,对字典进行了优化,存储数据的时候用的哈希算法,但是在拿出数据的时候,重新按照定义时候的顺序进行了排序
# dict的增删改查
>>> dictvar = {"猎人":"雷克萨", "牧师":"安度因", "法师":"吉安娜", "盗贼":"瓦莉拉"}		# 创建	
>>> {}.fromkeys([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 100)		

>>> dictvar["术士"] = "古尔丹" 	# {'猎人': '雷克萨', '牧师': '安度因', '法师': '吉安娜', '盗贼': '瓦莉拉', '术士': '古尔丹'}				
>>> dictvar
>>> dictvar.setdefault("战士", "加尔鲁什")		# 增加

>>> dictvar.pop("牧师")		# 删除“牧师”
>>> del dictvar["牧师"]		# 删除不存在的数据会报错
>>> dictvar.popitems()		# 随机删除
>>> dictvar.clear()			# 清空dictvar

>>> dictvar["牧师"] = "泰兰德"		# 修改
>>> dictvar.update(dic1)			# 更新

>>> dictvar["key"]			# 查询,不在则报错
>>> "key" in dictvar
>>> dic.get(key, default = None)     # 返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None)
>>> dictvar.keys() 			# 返回一个包含所有keys的列表
>>> dictvar.values()		# 返回一个包含所有values的列表
>>> dictvar.items()			# 返回一个包含所有(key, value)元组的列表

for k in dictvar:
	print(k, dictvar[k])	# 字典循环
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值