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):就是数学中的小数
pi = 3.14
print(pi)
print(type(pi))
# 科学计数法
b = 3.14e-3
print(b)复数(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):通过()进行定义,可以存储一系列的任意数据,不可以添加删除元素
示例
tp = ('小芳', '小敏', '小杜')
print(tp)
print(type(tp))
print(tp[0])
# 定义单个元素的元组时需要添加一个','
tp2 = (123,)
print(type(tp2))集合(set),使用{}进行定义,可以存贮一系列的任意数据,集合中的数据不能重复
示例
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))字典(dict),使用{}进行定义
元素是由键值对组成
键和值之间使用':'连接
字典中的键时唯一的,值可以是任意的
字典中的元素可以添加和删除
示例:
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('你好'))
类型转换
隐式类型转换:运算、条件判断等
强制类型转换:使用专门的函数就行类型转换
int:转换为整型,可以通过base参数指示带转换数据的格式
float:转换为浮点数
str:转换为字符串
list:转换为列表,参数必须是可迭代对象(str、tuple、set、dict)
tuple:转换为元组,使用方法同上
set:转换为集合,使用方法同上
dict:转换为字典,参数的内容必须是成对出现的
获取变量地址
函数:id
示例:
a = 10
print(id(a))
# 通过id可以获取变量的地址
# a = 20
# print(id(a))
b = 10
print(id(b))说明:了解,不要深究
数据类型 - 集合
添加: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:是否是数字或字母
python 数据类型、进制转换的更多相关文章
- Python中进制转换函数的使用
Python中进制转换函数的使用 关于Python中几个进制转换的函数使用方法,做一个简单的使用方法的介绍,我们常用的进制转换函数常用的就是int()(其他进制转换到十进制).bin()(十进制转换到 ...
- python 实现进制转换(二进制转十进制)
摘自https://baike.baidu.com/item/%E5%8D%81%E8%BF%9B%E5%88%B6%E8%BD%AC%E4%BA%8C%E8%BF%9B%E5%88%B6 pytho ...
- python任意进制转换
python任意进制转换 import string def module_n_converter(q, s, base=None): """ 将自然数按照给定的字符串转 ...
- python实现进制转换(二、八、十六进制;十进制)
python实现进制转换(二.八.十六进制:十进制) (一)十进制整数转为二.八.十六进制 1.format实现转换>>> format(2,"b") # (10 ...
- python中进制转换
使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x)Convert an integer numb ...
- Python 各种进制转换
#coding=gbk var=input("请输入十六进制数:") b=bin(int(var,16)) print(b[2:]) 详细请参考python自带int函数.bin函 ...
- python 中进制转换及format(),int()函数用法
python中数值型变量好像只能是十进制形式表示,其他类型变量只能以字符串形式存在,可以通过format函数将int类型变量转换成其他进制字符串,如下所示: v_code=15 # 2进制 x=for ...
- python的进制转换
转载于:https://www.cnblogs.com/FWF1944/p/11132409.html(方法论190404) Python整数能够以十六进制,八进制和二进制来编写,作为一般以10位基数 ...
- python之进制转换
Python中二进制是以0b开头的: 例如: 0b11 则表示十进制的3 8进制是以0开头的: 例如: 011则表示十进制的9 16进制是以0x开头的: 例如: 0x11则表示十进制 ...
- python的进制转换二进制,八进制,十六进制及其原理
#!usr/bin/env python# coding:utf-8def binary(): '''二进制的方法与算法''' Number = 10 Number1 = 20 Nu ...
随机推荐
- Windows API 查找窗体,发送Windows消息
最近项目中需要做Windows消息截获操作,在网上找了一些资料. public class WindowsAPI { /// <summary> /// 回调函数代理 /// </s ...
- ArcGIS的网络分析
ArcGIS的网络分析分为两类:传输网络(Network Analyst)和效用网络(Utility Network Analyst). 一.从应用上来考虑: 1.传输网络常用于道路.地铁等交通网络分 ...
- ZT C/C++变量命名规则,个人习惯总结
C/C++变量命名规则,个人习惯总结 (2012-10-31 13:48:10) 转载▼ 标签: c/c变量命名规则 c语言变量命名 c变量命名 规则规范 it 分类: C/VC C_C++变量命名规 ...
- 彻底关闭Firefox自动更新的方法
自己最近在使用firefox进行自动化测试时,发现配置好的firefox总是会自动更新,主要是因为一些高版本的浏览器无法安装firepath,没有firepath的火狐浏览器使用起来总是有很多的不方便 ...
- Linux的CPU相关知识
超线程和多线程的区别? 超线程从硬件层面理解,即一个CPU的部件(可以理解为核)同时执行多条指令,表现就是同时执行多个线程.多线程是软件层面的概念,比如CPU只有一个核,通过线程调度可以在一个时间段内 ...
- 在windows下解压缩rar文件
这是一篇比较无聊的博文.只是给博客除草的. 我从我的移动硬盘里翻出来了一堆电子书,从哪拿到的我忘了,但是都打在rar的压缩包里,这让我查找起来非常不方便.前几天找某本书看,就没有查到,又百度到的下载地 ...
- UVa 12230 - Crossing Rivers(数学期望)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- BZOJ3208:花神的秒题计划Ⅰ(记忆化搜索DP)
Description 背景[backboard]: Memphis等一群蒟蒻出题中,花神凑过来秒题…… 描述[discribe]: 花花山峰峦起伏,峰顶常年被雪,Memphis打算帮花花山风景区 ...
- 1412. [ZJOI2009]狼和羊的故事【最小割】
Description “狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......” Orez听到这首歌,心想:狼和羊如此和谐,为什么不尝试羊狼合养呢?说干就干! O ...
- 3、RabbitMQ-work queues 工作队列
work queues 工作队列 1.模型图: 为什么会出现 work queues? 前提:使用 simple 队列的时候 我们应用程序在是使用消息系统的时候,一般生产者 P 生产消息是毫不费力的( ...