• Python2-对象与变量-可变对象与不可变对象-可迭代对象-enumerate-zip-map



    1.对象与变量

    Python3中,一切皆为对象,Python语言的每个对象由标识符(identity)、类型(type)、值(value)标识。

    id(123)
    type(123)
    print(123)
    
    • 1
    • 2
    • 3

    Python对象是位于计算机内存中的一个内存数据块。为了引用对象,用户必须通过赋值语句把对象赋值给变量(也称之为把对象绑定到变量)。指向对象的引用即变量。

    2.对象的值的比较==和引用判断is

    通过==运算符可以判断两个变量指向的对象的值是否相同

    通过is运算符可以判断两个变量是否指向同一个对象

    x = 'abc'
    y = x
    z = 'abcd'
    
    print(x == y) # True
    print(x is y) # True
    print(x == z) # False
    print(x is z) # False
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.不可变对象与可变对象

    Python3对象可以分为不可变对象(immutable)和可变对象(mutable)。不可变对象一旦创建,其值就不能被修改;可变对象的值可以被修改。Python对象的可变性取决于其数据类型的设计,即是否允许改变其值。

    不可变对象:int、float、bool、str、complex、tuple、frozenset

    变量是指向某个对象的引用,多个变量可以指向同一个对象。给变量重新赋值并不改变原始对象的值,只是创建一个新对象,该变量引用该对象。

    可变对象:list、dict、set

    4.可迭代对象iterable

    可迭代对象一次返回一个元素,适用于循环结构。Python包括以下几种可迭代对象:

    序列(sequence):str、list、tuple
    字典、文件对象、迭代器对象iterator、生成器函数generator

    迭代器是一个对象,表示可迭代的数据集合,包括方法__iter__()__next__(),可以实现迭代功能。例如内置对象range是一个迭代器对象。

    生成器是一个函数,使用yield语句,每次产生一个值,也可以用于循环迭代。

    5.enumerate()

    Python语言中的for循环直接迭代对象集合中的元素,如果需要在循环中使用索引下标访问集合元素,则可以使用内置的enumerate()函数。

    enumerate()函数用于将一个可遍历的数据对象(list、tuple、str)组合为一个索引序列,并返回一个可迭代对象,所以在for循环中可以迭代下标和索引。

    seasons = ['Spring', 'Summer', 'Autumn', 'Winter']
    
    for i in enumerate(seasons, start=1):
        print(i)
        
    '''
    (1, 'Spring')
    (2, 'Summer')
    (3, 'Autumn')
    (4, 'Winter')
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    seasons = ['Spring', 'Summer', 'Autumn', 'Winter']
    
    for i,s in enumerate(seasons, start=1):
        print(str.format("第{0}季节:{1}", i, s))
    
    • 1
    • 2
    • 3
    • 4

    6.zip函数

    如果需要并行遍历多个可迭代对象,则可以使用Python内置函数zip()。zip()函数将多个可迭代对象中对应的元素打包成一个元组,然后返回一个可迭代对象。如果元素的个数不一致,则返回可迭代对象的长度与最短的对象相同。

    x = [1,2,3,4,5]
    y = ['a', 'e','i', 'o', 'u']
    
    for i in zip(x, y):
        print(i)
    '''
    (1, 'a')
    (2, 'e')
    (3, 'i')
    (4, 'o')
    (5, 'u')
    '''
    
    for idx,value in zip(x, y):
        print(idx, value)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    7.map函数

    如果需要遍历可迭代对象,并使用指定函数处理对应的元素,则可以使用Python内置函数map()。

    map(func, seq1[, seq2, ...])函数将func函数作用域seq中的每一个元素,并将所有的调用结果作为可迭代对象返回。如果func为None,作用等同于zip函数。

    例如要返回列表中每个字符串的长度:

    seasons = ['Spring', 'Summer', 'Autumn', 'Winter']
    print(list(map(len,seasons))) # [6, 6, 6, 6]
    
    • 1
    • 2
    print(list(map(pow, range(5), range(5)))) # [1, 1, 4, 27, 256]
    
    # range(5) : 0,1,2,3,4
    # 0的0次幂时1
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    4-9封装性练习
    Android OOM 问题探究 -- 从入门到放弃
    纯电动赛道保持高增长,哪十家T-BOX供应商占据主力份额
    基于costas环的载波同步系统matlab性能仿真
    SkeyeGisMap地图扩展(五) 自定义形状
    elasticsearch-analysis-dynamic-synonym同义词插件实现热更
    外部中断1电下降沿平触发
    cat命令应用
    【算法竞赛入门练习题】判断输入的数字是否为回文数字的俩种方法,数字逆置的方法
    基础算法--离散化
  • 原文地址:https://blog.csdn.net/ArthurHai521/article/details/133710244