首页IT科技西门子1200数据类型详解(03-数据类型)

西门子1200数据类型详解(03-数据类型)

时间2025-05-20 22:00:18分类IT科技浏览8946
导读:数据类型 Number - 数字类型...

数据类型

Number - 数字类型

数字类型包含int,float,bool,complex类型

int - 整型

整型 - 正数,负数,0 # type(variable) 可以查看变量的类型 # id(variable) 可以查看变量的地址 age = 18 res = type(int) # int res_id = id(age) # 返回内存地址 # 二进制整型 intvar = 0b110 print(type(intvar)) # int print(id(intvar)) # 8进制整型 intvar = 0o127 print(type(intvar)) # int 87 print(id(intvar)) # 16进制整型 intvar = 0xff print(type(intvar)) # 255 print(id(intvar))

float - 浮点型

# 小数 floatvar = 6.7 print(type(intvar)) # float print(id(intvar)) # 科学计数法 floatvar = 5.7e5 # 小数点右移 floatvar = 5.7e-2 # 小数点左移 print(floatvar,type(floatvar))

bool - 布尔类型

True 或 False boolvar = True boolvar = False

complex - 复数

# 实数+叙述 complexvar = 3 + 4j complexvar = -5j # 可以使用complex函数创建复数 res = complex(3,4) # 3+4j

String - 字符串

String类型也是一种容器类型

字符串定义

# 单引号 strvar = The sky is blue # 双引号 strvar = "The sky is blue" # 三引号 - 支持跨行效果 strvar = The sky is blue

转义字符

将无意义字符转变为有意义的字符,将有意义的字符转变为无意义的字符

\t - 制表符缩进 \n - 换行 \r - 将当前行中\r后面的字符拉倒当前行的行首

有意义的字符转变为无意义字符

# 在双引号内使用双引号,使用转义字符取消内部双引号的意义 print("生活不止眼前的苟且还有诗和\"\"方")

python中单引号字符串和双引号字符串是没有区别的

元字符串

r"字符串"- 将字符串原样输出,忽略转义字符的效果 strvar = "python\today" # \t会转义 strvar = r"python\today" # r会将字符串原样输出

字符串格式化输出

使用占位符,进行字符串的输出

%d - 整型占位符 %f - 浮点型占位符 %s - 字符串 name = "Evan" age = 8 # 方式1 print("%s今年%d岁了" % (name,age)) // Evan今年8岁了 # %2d - 表示占两位数字 print("%s今年%2d岁了" % (name,age)) // Evan今年 8岁了 中间有一个空格,数字之前补空格 # %-2d - 表示占两位数字,不够的用空格补,数字之后补空格 print("%s今年%-2d岁了" % (name,age)) # %f strvar = "这个牙刷%f元" % (9.5) # %.2f - 保留两位小数 strvar = "%s真好吃" % ("苹果") # 占位符可以用在一个字符串中 print("%s超时,%s%f%d斤" %("大润发","苹果",9.9,1))

list - 列表类型

列表是容器类的数据,可以存储不同数据的类型

定义列表

# 空列表 list = [] listvar = [98,6,9,"jack",True] // 存储不同类型的数据

索引

从0开始 倒序索引从-1开始 lis = ["jack","kk","pp","hahaha"] res = lis[0] # len(容器类型) - 获取元素的个数 print(len(ls)) # 4 # 获取列表中的最后一个元素 print(lis[len(lis)-1]) # len(list)-1 返回列表最后一个元素 print(lis[-1])

数组操作

# 修改列表中的元素 lis = [2,5,6,7] lis[3] = "jack" # 通过索引找到元素,将该内容修改

tuple - 元组类型

# 定义一个元素元组,加, tu = (1,) # 定义元组 tu = ("jack","Evan","kk") # 元组元素的索引从0开始 print(tu[0]) # jack

元组中的元素可以获取但是是不可修改的,有序

字符串类型

字符串也是一个容器类型,其中只能存储字符,空格和标点都是字符 字符串的索引从0开始 strvar = "Hello World" print(strvar[0]) # H

字符串中的字符可以获取但是不可以更改

set - 集合类型

集合可以进行交差并补运算 集合数无序 集合元素是唯一的,自动去重 集合中的元素不可通过索引进行获取 集合中的元素是不可修改的 # 定义空集合 setvar = set() # 只有这种方式可以创建空集合 setvar = {"巨石强森","乔丹","施瓦辛格","史泰龙"}

字典

# 定义空字典 dictvar = {} dictvar = { "篮球":"乔丹", "足球":"梅西", "NFL":"布雷迪" } # 获取集合中的元素通过key value的形式找到值 print(dictvar["篮球"]) # 乔丹 # 修改字典中的值 dictvar["篮球"] = "Kobe"

set和dict中的注意事项

字典的键 和 集合的值 有数据类型上的要求:

(允许的类型范围)不可变的类型: Number(int float complex bool) str tuple

(不允许的类型)可变的类型 : list set dict

哈希算法的提出目的是让数据尽量均匀的在内存当中分配,以减少哈希碰撞,提升存储分配的效率;

哈希算法一定是无序的散列,所以集合 和 字典都是无序

数据在内存中随机存储,速度快,但是容易出现哈希碰撞,为了解决哈希碰撞,提高存储效率

字典的键有要求,值没要求;字典的值可以任意换掉,但是键不可以.

3.6版本之前,完全无序,

3.6版本之后,存储的时候,保留了字典定义的字面顺序,在获取内存中数据时

重新按照字面顺序做了排序,所以看起来有序,实际上存储时还是无序.

变量的缓存机制(在同一个文件中)

针对于3.6版本的机制,3.8版本,只要值相同,内存地址就相同

整型

对于整型而言,-5~正无穷范围内的相同值 id一致

# 1.对于整型而言,-5~正无穷范围内的相同值 id一致 var1 = 5 var2 = 5 var1 = -100 var2 = -100 print(id(var1) , id(var2) )

浮点型

对于浮点数而言,非负数范围内的相同值 id一致

# 2.对于浮点数而言,非负数范围内的相同值 id一致 var1 = 4.67 var2 = 4.67 var1 = -4.67 var2 = -4.67 print(id(var1) , id(var2) )

布尔类型

布尔值而言,值相同情况下,id一致

# 3.布尔值而言,值相同情况下,id一致 var1 = True var2 = True print(id(var1) , id(var2) )

复数

复数在 实数+虚数 这样的结构中永不相同(只有虚数的情况例外)

# 4.复数在 实数+虚数 这样的结构中永不相同(只有虚数的情况例外) var1 = 4 +5j var2 = 4 +5j # 5j 情况下例外 var1 = 5j var2 = 5j # 相同 var1 = -5j # 不同 var2 = -5j print(id(var1) ,id(var2))

容器类型

字符串 和 空元组 相同的情况下,地址相同

列表,元组,字典,集合无论什么情况 id标识都不同 [空元组例外] # 5.字符串 和 空元组 相同的情况下,地址相同 var1 = "你" var2 = "你" var1 = () var2 = () print(id(var1) ,id(var2)) # 6.列表,元组,字典,集合无论什么情况 id标识都不同 [空元组例外] var1 = (1,2) var2 = (1,2) var1 = [1,2,3] var2 = [1,2,3] print(id(var1) ,id(var2))

小数据池

小数据池只针对int str bool 空元组() None关键字,这些数据类型有效

int类型

不同文件(模块),部分数据会驻留在小数据池中,在解释器进行编译脚本的时候,内存会提前开辟一些空间进行保存,-5-256,不同文件定义在这个范围内的数据,默认使用小数据池中的数据,不重新开辟空间

使用cmd命令行执行python,一行表示一个文件

字符串类型

字符串长度为0或1,默认驻留小数据池 s1 = " " s2 = " " print(s1 is s2) # True 字符串长度>1,且只含大小写字母,数字,下划线,默认驻留小数据池 s1 = "oldboy__good666__" s2 = "oldboy__good666__" print(s1 is s2) # True 用*得到的字符串 # 乘数等于1,无论什么字符串*1,都默认驻留小数据池 a = "ssjfajflajlj" b = a*1 print(a is b) # True # 乘数大于1时,仅包含数字\字母\下划线时会被缓存,但字符串长度不能大于20 qq = "sssssda" * 10 QQ = "sssssda" * 10 print(qq is QQ) # False 指定驻留

使用sys模块中的intern函数,指定变量指向同一个内存地址

可以指定任意字符串加入到小数据池中,无论声明多少变量,只要此值相同,都指向同一个地址空间 # 从sys模块引入intern函数,让a,b两个变量指向同一个值 from sys import intern a = intern("jack"*10) b = intern("jack"*10) print(a is b)

无论是变量缓存机制还是小数据池的驻留机制, 都是为了节省内存空间,提升代码效率

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
系统之家优盘安装步骤(系统之家u盘重装系统教程) 频率捕获范围(网站抓取频次是什么)