03-数据类型

数据类型

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 = "pythontoday"  # t会转义
strvar = r"pythontoday" # 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

哈希算法的提出目的是让数据尽量均匀的在内存当中分配,以减少哈希碰撞,提升存储分配的效率;
哈希算法一定是无序的散列,所以集合 和 字典都是无序
03-数据类型

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

字典的键有要求,值没要求;字典的值可以任意换掉,但是键不可以.
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) )

03-数据类型

浮点型

对于浮点数而言,非负数范围内的相同值 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,一行表示一个文件

字符串类型

  1. 字符串长度为0或1,默认驻留小数据池
s1 = " "
s2 = " "
print(s1 is s2)  # True
  1. 字符串长度>1,且只含大小写字母,数字,下划线,默认驻留小数据池
s1 = "oldboy__good666__"
s2 = "oldboy__good666__"
print(s1 is s2)  # True
  1. 用*得到的字符串
# 乘数等于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)

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

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:03-数据类型 - Python技术站

(0)
上一篇 2023年3月31日
下一篇 2023年3月31日

相关文章

  • 05-python运算符

    运算符 算术运算符 算数运算符: + – * / // % ** # + var1 = 7 var2 = 90 res = var1 + var2 print(res) # 97 # – var1 = 7 var2 = 90 res = var1 – var2 print(res) # 83 # * var1 = 7 var2 = 10 res = var1…

    Python开发 2023年3月31日
    00
  • 02-VS调试以及Qt基本使用

    VS调试以及Qt基本使用 1.汇编语言 1.1 VS中C语言嵌套汇编代码(了解) #include <stdio.h> int main() { //定义整型变量a, b, c int a; int b; int c; __asm { mov a, 3 //3的值放在a对应内存的位置 mov b, 4 //4的值放在b对应内存的位置 mov ea…

    C语言 2023年4月18日
    00
  • 01-进制之间的转换

    进制之间的转换 1.1 计算机硬件的基本认知 cpu: 中央处理器. 相当于人的大脑.运算中心,控制中心.内存: 临时存储数据. 优点:读取速度快。 缺点:容量小,造价高,断电即消失.硬盘: 长期存储数据. 优点:容量大,造价相对低,断电不消失。 缺点:读取速度慢.操作系统:统一管理计算机软硬件资源的程序 1.2 计算机文件大小单位 b = bit 位(比特…

    Python开发 2023年3月31日
    00
  • 01-C语言概述

    C语言概述 1.什么是C语言 C语言就是人和计算机交流的一种语言语言是用来交流沟通的。有一方说,有另一方听,必须有两方参与,这是语言最重要的功能: 说的一方传递信息,听的一方接收信息; 说的一方下达指令,听的一方遵循命令做事情。 语言是人和人交流,C语言是人和机器交流。只是,人可以不听另外一个人,但是,计算机是无条件服从。语言有独特的语法规则和定义,双方必须…

    C语言 2023年4月18日
    00
  • 03-变量\常量\进制

    变量和数据类型 所有定义的变量都存在内存中,定义变量需要内存空间,不同类型的变量需要的内存空间是不同的数据类型作用:告诉编译器,我这个数据在内存中需要多大的空间,编译器预算对象(变量)分配的内存空间大小。 1.常量与变量 1.1 常量 常量:程序运行中不能改变的量 整型常量:1 200 字符常量: ‘c’ 字符串常量:”hello” 实型常量(浮点型常量):…

    C语言 2023年4月18日
    00
  • 04-数据类型转换

    数据类型 Number – 强制类型转换(int float bool complex) 1. 强制把数据转换为整型 – int float bool 纯数字字符串 # 强制把数据转换为整型 – int float bool 纯数字字符串 var1 = 13 var2 = 5.67 var3 = True var4 = “123456” var5 = “12…

    Python开发 2023年3月31日
    00
  • 02-python简介

    python简介 python认知 1、python简介 89年开发的语言,创始人范罗苏姆(Guido van Rossum),别称:龟叔(Guido).python具有非常多并且强大的第三方库,使得程序开发起来得心应手.Python程序员的信仰:人生苦短,我用python!开发方向: 机器学习人工智能 ,自动化运维&测试 ,数据分析&爬虫 …

    2023年3月31日
    00
合作推广
合作推广
分享本页
返回顶部