• Python核心数据类型——概览


    Python的核心数据类型有:数字,字符串,列表,字典,元组,文件等。

    对象类型 例子 可变性
    数字 345,3.45, 345L,3+4j 不可变
    字符串 ‘spam',“eggs” 不可变
    列表 [1, ['a', 'b'], 2] 可变
    字典 {1: 'a', '2': 'b', 'food': 'spam'} 可变
    元组 (1, 2, 'spam) 不可变
    文件 myFile = open('data', 'r + w')  

     

    可变与不可变

    • Python中变量是不需要事先声明的,这一点不同于C语言,而这与其内部对变量和对象的存储相关。在Python中变量名和对象是分开存储的,变量实际上是字典,以变量名为键映射对象的引用。赋值操作如str = 'abc',是将对象'abc'的引用赋给str这个变量名。
    • 由于变量存储的是对象的引用,于是就会出现多个变量指向同一个引用的问题。但是对象存在可变的与不可变的,如果变量引用的是不可变的,那么修改该变量并不会影响其他变量,实际上这时两个变量已经指向不同的对象了,因为修改的时候是生成新的对象,然后将新的引用赋给变量。

    内置函数vars(),返回在该函数调用前存在的变量组成的字典,当然还会包含一些系统预先定义的变量。

    >>> x = 1
    >>> y = 2
    >>> vars()
    {'__builtins__': <module '__builtin__' (built-in)>, '__package__': None, 'x': 1, 'y': 2, '__name__': '__main__', '__doc__': None}
    >>> 
    

    数字、字符串和元组是不可变的

    • 当执行a = 1,再执行a = 2时,实际上是新建了一个对象2,然后将变量名a的引用指向了对象2。
    • 字符串是不可变的,不能执行str[i] = 'c'的操作。
    • 元组类似于列表,但是约定其是不可变的,也就是不能修改其元素的值,这样可以避免不同变量引用同一元组,而造成元组被修改。


    列表和字典是可变的

    • 列表实际上是用一维数组来存储对应的元素的对象的引用,修改列表实际上修改的是引用。
    • 字典的键类似于变量名,其映射的值,类似于对象,对其修改时也是类似的修改引用。字典没有顺序的概念,意思是无法通过偏移来访问其元素,在存储时也是类似于列表用一维数组来存储键,只是采用了哈希算法,为的是按键查找时速度更快。


    分片

    • 对于字符串、列表和元组都支持分片操作,分片可以批量操作元素。如果是可变对象,分片是一个新对象,对分片的操作不会改变原先序列,如果是可变对象,对分片的操作是在源处修改。
    • 分片L[i:j]提取对应部分作为一个序列,表示从下标为i开始到下标为j结束,不包含j。
    • 分片的边界默认是0和序列的长度,如L[:j],表示从0~j-1,L[i:],表示从i开始的所有元素,L[:]表示更个序列。
    • 分片的下标支持负数,负数表示从右往左数,如-1表示从右往左数第1个,-2表示从右往左数第2个,如L[:-1] == L[:n],L[-3:-1]。 

    扩展分片

    • 扩展分片增加了第3个限制值,其基本形式为X[i:j:k],意思是索引X对象中的元素,从偏移为i(含i)直到偏移为j-1(含j-1),每隔k个元素索引一次。第三个限制值k默认为1,可以为负数,负数表示从右往左索引元素,即从偏移i(含i)开始往左索引直到偏移为j+1(含j+1)的元素。

    例如,X[1:10:2] 会取出偏移为1, 3, 5, 7, 9的元素

       X[:10:2] 会取出偏移为0, 2, 4, 6, 8的元素

    当k为负数时,从右往左索引元素。

    >>> s = 'abcdefg'
    >>> s[::-1]
    'gfedcba'
    >>> s[5:1:-1]
    'fedc'
    
    s[5:1:-1]表示从偏移5从右往左索引,直到偏移2的序列。

  • 相关阅读:
    java实现httpclient 访问
    推荐博文
    Running With xpi
    1 Spring MVC 原理
    windows服务相关
    求职面试三部曲
    使用mvn插件执行工程单元测试OOM的解决办法
    maven-surefire插件问题
    小问题
    NFA到DFA实例
  • 原文地址:https://www.cnblogs.com/restran/p/2257609.html
Copyright © 2020-2023  润新知