文章出处: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. ORA-01502: 索引或这类索引的分区处于不可用状态

    ORA-01502: 索引或这类索引的分区处于不可用状态 原因: 出现这个问题,可能有人move过表,或者disable 过索引.1. alter table xxxxxx move tablespa ...

  2. Unicode与 utf8的互相转换

    <?php function unicode_encode($name) { $name = iconv('UTF-8', 'UCS-2', $name); $len = strlen($nam ...

  3. VIM中的正则表达式及替换命令

    VIM中的正则表达式及替换命令 一.使用正则表达式的命令 使用正则表达式的命令最常见的就是 / (搜索)命令.其格式如下: /正则表达式 另一个很有用的命令就是 :s(替换)命令,将第一个//之间的正 ...

  4. xml 与 DataSet 互相转换

    本文转载:http://www.cnblogs.com/30ErLi/archive/2010/09/21/1832694.html XmlDatasetConvert 该类提供了四种方法: 1.将x ...

  5. [TypeScript] Stopping a TypeScript Build When Errors Are Found

    TypeScript will always compile even if there are ridiculous errors in your project. This lesson show ...

  6. Android TextView中有图片有文字混合排列

    Android TextView中有图片有文字混合排列 1.使用html.fromHtml 2.新建ImageGetter 3.使用<img src>标签 demo: 1.设置文字 ((T ...

  7. (转载)myeclipse项目名称重命名

    myeclipse项目名称重命名 实例1 今天晚上在做一个jsp唱片显示的实例,myeclipse项目名称原本想写music结果写成了musci.这就需要项目名称的重命名,单纯的使用 “重构--> ...

  8. HDU2088JAVA

    Hot~~招聘——巴卡斯(杭州),亚信科技,壹晨仟阳(杭州) Box of Bricks Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: ...

  9. ubuntu权限管理常用命令 分类: linux ubuntu 学习笔记 2015-07-05 14:15 77人阅读 评论(0) 收藏

    1.chmod 第一种方式 chomd [{ugoa}{+-=}{rwx}] [文件或者目录] u 代表该文件所属用户 g 代表该文件所属用户组 o 代表访客 a 代表所有用户 +-=分别表示增加权限 ...

  10. C按格式输出数字

    看到有人问如何输出如下格式的字符: //1 6 10 13 15 //2 7 11 14 //3 8 12 //4 9 //5 于是写了一个,以后方便查看. main() { /* rows i j ...