• Python 类型


    文章出处: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

  • 相关阅读:
    php无刷新上传图片和文件
    wamp(win1064位家庭版+apache2.4.20+php5.5.37+mysql5.5.50)环境搭建
    linux下常见解压缩命令
    nginx虚拟主机配置小结
    Nginx下配置ThinkPHP的URL Rewrite模式和pathinfo模式支持
    iframe 高度自适应/以及在ie8中空白问题
    小程序-调用公共js对象方法/ app.js
    小程序-tabbar相关样式设置
    微信小程序连接无法跳转/ can not navigate to tabBar page错误
    微信小程序-tabBar无法显示问题解析
  • 原文地址:https://www.cnblogs.com/winstic/p/4032253.html
Copyright © 2020-2023  润新知