• Python学习笔记整理(python 3)


    一、tuple(元组)

    tuple和list非常类似,但是tuple一旦初始化就不能修改,如:

    classmates = ('Michael', 'Bob', 'Tracy')

        1

    classmates这个tuple不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用classmates[0],classmates[-1],但不能赋值成另外的元素

    不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple
    tuple的陷阱

    要定义一个只有1个元素的tuple,如果你这么定义:

    t = (1)
    t
    1

        1
        2
        3

    定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。
    所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:

    t = (1,)
    t
    (1,)

        1
        2
        3

    Python在显示只有1个元素的tuple时,也会加一个逗号,,以免你误解成数学计算意义上的括号。

    最后来看一个“可变的”tuple:

    t = ('a', 'b', ['A', 'B'])
    t[2][0] = 'X'
    t[2][1] = 'Y'
    t
    ('a', 'b', ['X', 'Y'])

        1
        2
        3
        4
        5

    二、Python中list类型切片
    1、基本用法

    ①con[start_index]:返回索引值为start_index的对象

    ②con[start_index: end_index]:返回索引值为start_index到end_index-1之间的连续对象

    ③con[start_index: end_index : step]:返回索引值为start_index到end_index-1之间,并且索引值与start_index之差可以被step整除的连续对象,即步长

    这里写图片描述
    2、缺省用法

    ①con[start_index: ]:缺省end_index,表示从start_index开始到序列中最后一个对象

    ②con[: end_index]:缺省start_index,表示从序列中第一个对象到end_index-1之间的片段

    ③con[:]:缺省start_index和end_index,表示从第一个对象到最后一个对象的完整片段

    ④con[::step]:缺省start_index和end_index,表示对整个序列按照索引可以被step整除的规则取值

    可以用负数做切片。负数用在从序列尾开始计算的位置

    这里写图片描述

    s[::-1]可视为翻转效果

    这里写图片描述
    3、Numpy中的二维ndarray切片

    对于一维数据的具体用法和Python中的类似

    对于二维数值用法如下,X[:,:]用逗号分隔两个维度,对于每个维度用法一样,以下面这个二维数组为例:

    这里写图片描述

    这里写图片描述

    x[:,1] 取x轴方向所有值,y轴等于1,结果:

    这里写图片描述

    x[1:3,1] 取x轴 x大于等于1,小于3,y轴等于1,结果:

    这里写图片描述
    三、lambda表达式简单用法

    对于简单的函数,也存在一种简便的表示方式,即:lambda表达式

    # ###################### 普通函数 ######################
    # 定义函数(普通方式)
    def func(arg):
        return arg + 1

    # 执行函数
    result = func(123)

    # ###################### lambda ######################

    # 定义函数(lambda表达式)
    my_lambda = lambda arg : arg + 1

    # 执行函数
    result = my_lambda(123)

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15

    四、__call__

    class X(object):
        def __init__(self, a, b, range):
            self.a = a
            self.b = b
            self.range = range
        def __call__(self, a, b):
            self.a = a
            self.b = b
            print('__call__ with ({}, {})'.format(self.a, self.b))
        def __del__(self, a, b, range):
            del self.a
            del self.b
            del self.range

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13

    >>> xInstance = X(1, 2, 3)
    >>> xInstance(1,2)
    __call__ with (7, 8)
    ---------------------
    作者:javaduqing
    来源:CSDN
    原文:https://blog.csdn.net/disiwei1012/article/details/78999337
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    !clrstack未显示任何方法名
    !dumpheap参数和SOS帮助系统的一些一般信息
    WinDbg Script---显示RCW对象引用的COM对象
    为什么不能将2个调试器附加到1个进程
    什么是互操作调试(Interop-Debugging)?
    为什么托管调试与本机调试不同?
    在WinDBG中管理源代码窗口
    如何从转储文件确定 /LARGEADDRESSAWARE
    Dump文件数据存储格式(九)
    Windbg命令系列---!cpuid(CPU信息)
  • 原文地址:https://www.cnblogs.com/wori/p/10141683.html
Copyright © 2020-2023  润新知