文章出处:http://www.cnblogs.com/winstic/,请保留此连接
 
python是动态类型语言,不需要预先声明变量的类型,变量类型和值在赋值的那一刻被初始化
 
python使用对象模型来存储数据,构造任何类型的值都是一个对象
 

数字(Number)

  • 有符号整型
    • 长整型
    • 布尔值
  • 浮点数
  • 负数
  • decimal(2.4版新增)用于十进制浮点型,但需要引入包decimal
    >>> import decimal
    >>> print decimal.Decimal(1.1)
    1.100000000000000088817841970012523233890533447265625

    python 2.3开始,超出整型范围的会自动转换为长整型。


字符串(String)
  单引号与双引号等价,三引号保留原字符串格式,'+'用于字符串连接,'*'用于字符串重复
  []:索引操作符,[:]:切片操作符
  

>>> pystr = "python"
>>> pystr[0]
'p'
>>> pystr[2:4]
'th'
>>> pystr + ' cool'
'python cool'
>>> pystr * 2
'pythonpython'

列表(list)

  • 列表用[ ]标识。是python最通用的复合数据类型

      list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]

  • 列表解析:在一行中使用for循环,将所有值放到一个列表中

    >>> pylist = [x ** 2 for x in range(4)]
    >>> type(pylist)
    <type 'list'>
    >>> print pylist
    [0, 1, 4, 9]
  • 对于上述的列表解析形式,有一种很类似的形式使用的操作时(),但返回的是迭代器(generator)类型,在此列出加以区分(注意不要与元组混淆)

    >>> pya = (x ** 2 for x in range(4))
    >>> type(pya)
    <type 'generator'>
    >>> for i in pya:
    print i

列表同样满足索引操作([]),切片操作([:])


元组(Tuple)

  • 元组用"()"标识。内部元素用逗号隔开。但是元素不能二次赋值,相当于只读列表。

     tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 )

元组同样满足索引操作([]),切片操作([:])


字典(dictionary)

  • 字典是python中的映射数据类型,类似于perl中的关联数组或哈希表,由键-值(key-value)对构成,一般用不可变对象(immutable)作为键值
  • 字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

    tinydict = {'name': 'john','code':6734, 'dept': 'sales'}

  • 字典(dictionary)是除列表外python之中最灵活的内置数据结构类型。两者之间的区别在于(当然不止以下区别):
    1. 列表是有序的对象结合,字典是无序的对象集合。
    2. 字典当中的元素是通过键来存取的,而列表通过偏移存取。

集合(set)

  • 集合对象是一组无序排列的可哈希值,因此集合成员可以作为字典的键。
  • 因集合是无序的,故无法对集合执行索引和切片操作。
  • 集合分为可变集合(set)和不可变集合(frozenset);对可变集合可以执行简单的添加和删除等操作。
    >>> # 集合set的简单操作
    >>> s = set('python') # 利用工厂函数set()创建集合
    >>> s
    set(['h', 'o', 'n', 'p', 't', 'y'])
    >>> 'p' in s    # 判断元素是否在集合中
    True
    >>> set('py') < s # 子集
    True

    可以看到上面,集合的打印结果是无序的,而且以上只是简单举例集合操作,想要了解更多关于集合的操作可以使用函数dir() 和help()查看。


可变对象(mutable)和不可变对象(immutable)的区别

  首先再次声明,在python中所有的类型操作都作为对象处理,而且对变量的使用不需要预先声明类型(其实这里不该使用“变量”描述,姑且用“变量”代替吧),python会根据变量的值动态确定变量类型并存储在内存中(这是python的一大特点),对于immutable类型,若要改变它的值,采取的机制是分配一个新的对象(这里不必担心内存浪费的情况,python有自己的一套内存回收机制);而对于mutable 类型还是在原来的内存地址上进行操作,~~类似于在C++ 中的引用。

  下面给以上类型分分类:

    不可变对象(mutable):Number , String , tuple , frozenset

    可变对象(immutable):list , dictionary , set

Python 类型的更多相关文章

  1. python类型学习

    python类型学习 标准类型 数字 Integer 整型 Boolean 布尔型 Long integer 长整型 Floating point real numer  浮点型 Complex nu ...

  2. C Python类型互换

    从Python到C的转换用PyArg_Parse*系列函数,int PyArg_ParseTuple():把Python传过来的参数转为C:int PyArg_ParseTupleAndKeyword ...

  3. Python类型和对象

    关键字:Python 类型 对象原文:http://wiki.woodpecker.org.cn/moin/PyTypesAndObjects 关于本书 解释新式的Python对象(new-style ...

  4. python类型检测最终指南--Typing模块的使用

    正文共:30429 字 预计阅读时间:76分钟 原文链接:https://realpython.com/python-type-checking/ 作者:Geir Arne Hjelle 译者:陈祥安 ...

  5. PyQt(Python+Qt)学习随笔:信号签名中的万能Python类型PyQt_PyObject

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 信号在定义时参数如果使用字符串'PyQt_PyObject'表示参数可以是任何Python类型,这通 ...

  6. python 类型判断-- isinstance函数

    判断类型 函数isinstance()可以判断一个变量的类型,既可以用在Python内置的数据类型如str.list.dict,也可以用在我们自定义的类,它们本质上都是数据类型. 假设有如下的 Per ...

  7. Python 类型的分类

    1.存储模型,对象可以保存多少个值.如果只能保存一个值,是原子类型.如果可以保存多个值,是容器类型.数值是原子类型,元组,列表,字典是容器类型.考虑字符串,按道理,字符串应该是容器类型,因为它包含多个 ...

  8. 介绍几款 Python 类型检查工具

    近日,微软在 Github 上开源了一个 Python 静态类型检查工具:pyright ,引起了社区内的多方关注. 微软在开源项目上的参与力度是越来越大了,不说收购 Github 这种大的战略野心, ...

  9. 1. python 类型和运算

    类型和运算 (Types and Operations) Introducing Python Object Types 在非正式的意义上, 在 Python 中, 我们用一些东西做事情. " ...

随机推荐

  1. javascript如何监听页面刷新和页面关闭事件

    本文转之http://www.qqtimezone.top 在我们的日常生活中,时常遇到这么一种情况,当我们在点击一个链接.关闭页面.表单提交时等情况,会提示我们是否确认该操作等信息. 这里就给大家讲 ...

  2. Maven配置 settings.xml 转

    https://my.oschina.net/qjx1208/blog/201085 摘要: 记录settings.xml的配置,理解mirror.repository.profile的关系 本地仓库 ...

  3. 关于css命名规范

    1 newsHeader-logo,第一个单词小写,第二个单词大写,第三个单词加-

  4. 6步骤实现CentOS系统环境精简优化

    6步骤实现CentOS系统环境精简优化 发布时间:2014-11-03 14:59:27   编辑:AHLinux.com 第一步.删除不必要的自带软件包yum remove Deployment_G ...

  5. 20169210《Linux内核原理与分析》第四周作业

    网易云课堂学习: 在实验楼的学习中,这次的实验是利用mykernel实验模拟计算机硬件平台 首先进入linux-3.9.4, $cd LinuxKernel/linux-3.9.4 如下图所示 接下来 ...

  6. Contact Form 7邮件发送失败的解决办法

    一.contact form 7无法发送邮件的原因 对mail()函数的不支持. Contact Form 7表单提交失败在使用过程中会出现,归根结底原因在于wordpress主机问题,由于国 内很多 ...

  7. 使用Parse内付费服务出现的Error Domain=Parse Code=146 "The operation couldn’t be completed. (Parse error 146.)

    因为开发一个应用有个内付费去广告功能,介于苹果官方提供的方法没用过,感觉有些复杂,于是选用了第三方组件Parse来解决这个问题,简单易操作: Parse简化苹果官方内付费问题,使用方法分厂简单只有两个 ...

  8. [Node.js] Introduction to apiCheck.js

    timeoutLog.js: var apiCheckFactory = require('api-check'); var myCheck = apiCheckFactory(); module.e ...

  9. Redis Windows版安装及简单使用

    1.Redis简介及优势 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. 特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次 ...

  10. JS0热身运动

    热身热身小知识点: JS中如何获取元素: 1 通过ID名称来获取:document get element by id  -->document.getElementById() 2 .... ...