python整数类型进制表示_python 数据类型、进制转换

存储单位

最小单位是bit,表示二进制的0或1,一般写作b

最小的存储单位是字节,用byte表示,1B = 8b

1024B = 1KB

1024KB = 1MB

1024MB = 1GB

1024GB = 1TB

1024TB = 1PB

2^32 = 2^10 * 2^10 * 2^10 * 2^2 = 4GB

进制转换

十进制:

基数为0~9,逢10进1

示例:123 = 1 * 10^2 + 2 * 10^1 + 3*10^0 = 100 + 20 + 3 = 123

二进制:

基础0和1,逢2进1,python中使用'0b'表示

示例:0b110100 = 2^5 + 2^4 + 2^2 = 32 + 16 + 4 = 52

十进制转二进制:除2取余,倒序书写

22 = 0b10110

八进制:

基数0~7,逢8进1,python中使用'0o'表示

示例:0o123 = 1 * 8^2 + 2 * 8^1 + 3 * 8^0 = 64 + 16 + 3 = 83

八进制转二进制:八进制的1位表示3位二进制数

0o123 = 0b001 010 011

十六进制:

基数0~9、A~F,逢16进1,python中使用'0x'表示

示例:0xAB = 10 * 16^1 + 11 * 16^0 = 160 + 11 = 171

十六进制转二进制:十六进制1位表示4位二进制数

0xABC = 0b1010 1011 1100

计算机中的数据,是以哪种进制存储的?为什么?

二进制,因为计算机设计时只识别二进制。具体原因如下:

稳定性高(0和1)、成本低(技术上易实现)、与生活中的真假逻辑相吻合(易于解决实际问题)

计算机中的数据如何存储?

如何存储负数?

最高位作为符号位:0表示正数,1表示负数

虽然牺牲了最高位,但是可以解决负数存储问题,进而简化了硬件设计成本

原码反码和补码

正数的三码一致,只有负数才有反码和补码

负数的反码等与原码符号位不变,其余位取反

负数的补码等于反码加1

计算机中的数据都是以补码存储的

数据类型

不同的数据类型都是为了解决实际问题而出现,就是为了进行各种运算而存在

Python中常用数据类型:整型、浮点、布尔、字符串、列表、元组、字典、集合、空等

整型(int):就是数学中的整数

浮点(float):就是数学中的小数

copycode.gif

pi = 3.14

print(pi)

print(type(pi))

# 科学计数法

b = 3.14e-3

print(b)

copycode.gif

复数(complex):了解

c = 3 + 5j

print(type(c))

布尔(bool):只有True/False两个值,对应于生活中的真假

空(NoneType):只有一个值None

字符串(str):使用引号括起来的一串字符

可以使用单引号双引号或者三引号定义

转义:就是时特定的字符失去原有的意义,使用'\'进行转义

单引号中的单引号,双引号中的双引号

很多时候'\'也需要转义

特殊:'\n'表示换行,'\t'表示制表

列表(list):通过[]进行定义,可以存储一系列的任意数据,可以添加删除元素

示例

lt = [1, 3.14, 'hello']

print(lt)

print(type(lt))

# 提取元素,下表从0开始,存在越界问题

print(lt[0])

元组(tuple):通过()进行定义,可以存储一系列的任意数据,不可以添加删除元素

示例

copycode.gif

tp = ('小芳', '小敏', '小杜')

print(tp)

print(type(tp))

print(tp[0])

# 定义单个元素的元组时需要添加一个','

tp2 = (123,)

print(type(tp2))

copycode.gif

集合(set),使用{}进行定义,可以存贮一系列的任意数据,集合中的数据不能重复

示例

copycode.gif

s = {'李白', '辛弃疾', '苏东坡', '欧阳修', '李白', '杜甫'}

s2 = {'李白', '宋晓峰', '杜甫'}

print(s)

print(type(s))

# 交集

print(s & s2)

# 并集

print(s | s2)

# 差集

print(s - s2)

print(s2 - s)

# 定义空集合,不能使用{},这是留给定义空字典使用的

# s3 = {}

s3 = set()

print(type(s3))

copycode.gif

字典(dict),使用{}进行定义

元素是由键值对组成

键和值之间使用':'连接

字典中的键时唯一的,值可以是任意的

字典中的元素可以添加和删除

示例:

copycode.gif

xiaoming = {'name': '小明', 'age': 20}

print(xiaoming)

print(type(xiaoming))

# 根据键提取值

print(xiaoming['name'])

# 根据不存在的键获取值时会报KeyError错

# print(xiaoming['height'])

# 等价于xiaoming['name'],但是当键不存在时不报错,返回None

print(xiaoming.get('height'))

# 统计元素个数

# 字典表示键值对个数

print(len(xiaoming))

# 列表表示元素个数

print(len(lt))

# 字符串表示字符个数

print(len('你好'))

copycode.gif

类型转换

隐式类型转换:运算、条件判断等

强制类型转换:使用专门的函数就行类型转换

copycode.gif

int:转换为整型,可以通过base参数指示带转换数据的格式

float:转换为浮点数

str:转换为字符串

list:转换为列表,参数必须是可迭代对象(str、tuple、set、dict)

tuple:转换为元组,使用方法同上

set:转换为集合,使用方法同上

dict:转换为字典,参数的内容必须是成对出现的

copycode.gif

获取变量地址

函数:id

示例:

copycode.gif

a = 10

print(id(a))

# 通过id可以获取变量的地址

# a = 20

# print(id(a))

b = 10

print(id(b))

copycode.gif

说明:了解,不要深究

copycode.gif

数据类型

- 集合

添加:add

删除:

remove,元素存在就删除,不存在就爆粗

discard,元素存在就删除,不存在也不保存

pop,随机弹出一个元素,返回后删除元素

清空:clear

并集:union

交集:

intersection:不改变原集合

intersection_update:使用交集更新原集合

差集:

difference:不会改变原集合

difference_update:使用差集更新原集合

判断:

isdisjoint:是否没有交集

issubset:是否是另一集合的子集

issuperset:是否是另一集合的超集(父集)

- 字典

获取:

d[key]:根据键获取值,不存在时或报错

d.get(key, '默认值'):不存在时默认返回None,也可以指定默认值

更新:

d[key] = value 键存在就更新,不存在就添加

d.update(d2) 将字典d2中的键值对依次添加到d中,已经存在的键会覆盖

删除:

del d[key]

d.pop(key) 返回删除的值

清空:clear

所有键:keys 返回可迭代对象

所有值:values 返回可迭代对象

- 字符串

join:拼接

split:切割,从左边

rsplit:从右边切割

splitlines:按照换行符切割

自行测试:

find:查找第一次出现指定字符串的位置,没有时返回-1

rfind:从右边开始查,返回第一次出现的位置

upper:全大写

lower:全小写

swapcase:大小写转换

capitalize:首字符大写

title:每个单词首字母大写

count:统计某个字符串出现的次数

startswith:是否以指定字符串开头

endswith:是否以指定字符串结尾

istitle:是否每个单词首字母大写

islower:是否是全小写

isupper:是否是全大写

isdecimal:是否是数字

isalpha:是否是字母

isalnum:是否是数字或字母

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值