数据类型

存储单位

  • 最小单位是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 数据类型、进制转换的更多相关文章

  1. Python中进制转换函数的使用

    Python中进制转换函数的使用 关于Python中几个进制转换的函数使用方法,做一个简单的使用方法的介绍,我们常用的进制转换函数常用的就是int()(其他进制转换到十进制).bin()(十进制转换到 ...

  2. 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 ...

  3. python任意进制转换

    python任意进制转换 import string def module_n_converter(q, s, base=None): """ 将自然数按照给定的字符串转 ...

  4. python实现进制转换(二、八、十六进制;十进制)

    python实现进制转换(二.八.十六进制:十进制) (一)十进制整数转为二.八.十六进制 1.format实现转换>>> format(2,"b") # (10 ...

  5. python中进制转换

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x)Convert an integer numb ...

  6. Python 各种进制转换

    #coding=gbk var=input("请输入十六进制数:") b=bin(int(var,16)) print(b[2:]) 详细请参考python自带int函数.bin函 ...

  7. python 中进制转换及format(),int()函数用法

    python中数值型变量好像只能是十进制形式表示,其他类型变量只能以字符串形式存在,可以通过format函数将int类型变量转换成其他进制字符串,如下所示: v_code=15 # 2进制 x=for ...

  8. python的进制转换

    转载于:https://www.cnblogs.com/FWF1944/p/11132409.html(方法论190404) Python整数能够以十六进制,八进制和二进制来编写,作为一般以10位基数 ...

  9. python之进制转换

    Python中二进制是以0b开头的:    例如: 0b11 则表示十进制的3 8进制是以0开头的:    例如: 011则表示十进制的9 16进制是以0x开头的:    例如: 0x11则表示十进制 ...

  10. python的进制转换二进制,八进制,十六进制及其原理

    #!usr/bin/env python# coding:utf-8def binary(): '''二进制的方法与算法'''    Number = 10    Number1 = 20    Nu ...

随机推荐

  1. Java学习---TCP Socket的学习

    基础知识 1. TCP协议 TCP是一种面向连接的.可靠的.基于字节流的运输层(Transport layer)通信协议.在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层 ...

  2. Spring学习---Spring中利用组件实现从FTP服务器上传/下载文件

    FtpUtil.java import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcepti ...

  3. August 19th 2017 Week 33rd Saturday

    Live for today and stop stressing out about tomorrow. 为今天而活,不必为明天过分担心. Stop bewailing the past misfo ...

  4. ZT 感触的屌丝职场记 投递人 itwriter 发布于 2013-05-27 09:21 评论(18) 有3402人阅读 原文链接 [收藏] « »   作者@幻想哥呀幻想哥   有一位屌丝男,从小抱着报效祖国的理想上了大学,毕业后干了 IT 行业,高中那时候看文汇报说,搞 IT 的在上

    屌丝职场记 投递人 itwriter 发布于 2013-05-27 09:21 评论(18) 有3402人阅读  原文链接  [收藏]  « » 作者@幻想哥呀幻想哥 有一位屌丝男,从小抱着报效祖国的 ...

  5. Maximum Flow and Minimum Cut

    最大流最小割 Introduction Mincut Problem 最小割问题,输入是带权有向图,有一个源点 s(source)和一个汇点 t(target),边的权重在这里称作容量(capacit ...

  6. CSS3动画中的位置设定问题

    水平居中的不同方法实现: position: absolute; margin: auto; left:; right:; position: absolute; left:%; -webkit-tr ...

  7. 联想Thinkpad 遇到双系统 uefi Ubuntu无法进入的引导问题解决方案

    最近因为许多课程设计的需要,安装了Ubuntu双系统,但是一开始遇到了安装好了以后无法进入的问题,后来弄好后手残又把引导项给删了又要弄回去,反反复复很多次,网上的很多经验都十分过时,要么对最新的uef ...

  8. swift中的"类型擦除"

    代理模式.或者协议模式 因为swift泛型还不支持逆变和协变也就不会有真的类型擦除,而这里说的"类型擦除"是指:利用一个具体实现的通用泛型类(参看系统库的AnySequence), ...

  9. 让CI框架支持service层

    大家知道CodeIgniter框架式MVC分层的,通常大家把业务逻辑写到Controller中,而Model只负责和数据库打交道. 但是随着业务越来越复杂,controller越来越臃肿,举一个简单的 ...

  10. BZOJ3926:[ZJOI2015]诸神眷顾的幻想乡(广义SAM)

    Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日. 粉丝们非常热情,自发组织表演了一系列节目给幽香看. ...