• Python学习笔记摘要(一)类型 字符串 函数 列表 深浅拷贝


    python中的对象和类型
    在python中,认为系统中的每一个“东西”都是一个对象,在python中,“对象”有着特殊的意义,python中的对象有:
    一个标识
    一些属性
    零个或多个名称
    当python创建对象时,它接收到一个标识号,可以使用id函数,查找它的ID号,python用这个数字将一个对象和其他对象区分开。除了ID号,对象还有一个或者多个名字,名字不是对象ID的一部分,使用名字是为了提高对象的可读性。python使用命名空间(每当创建新变量时,它被放入列表中,并与一个值关联。如果表中已经存在相同的变量名,则更新与它关联的值)来关联名字。最后每个对象有与之相关联的属性。属性本质上是一些关于对象的信息。

    aInt=7
    id(aInt)
    type(aInt)

    bFloat=2.5
    id(bFloat)
    type(bFloat)

    aInt=bFloat
    type(aInt) ---aInt is now of type float
    id(aInt) ---aInt’s now has the same ID as bFloat
    会发现对象的类型与名字无关,相反它只指定与它相关联的对象,aInt=bFloat将这两个名称关联到同一个对象上。

    -----------------------------------------
    数字:

    整数:不同的前缀代表不同的进制,例如0代表8进制,0x代表16进制
    浮点数(加上前缀例如0是没有意义的):浮点数是一个近似值,不是精确值,对浮点数进行运算所得到的结果也是近似值。整数是精确值,整数运算得到的也是精确值。

    集合:set([1,2,3])

    由于类型信息不实变量的一部分,在变量名字前面加上类型作为前缀,对于跟踪类型是有用的,例如intVar,myInt

    每种类型都有相关联的构造函数,构造函数的名称就是类型名称(int,float,str…)。新航道雅思培训如果圆括号内没有给出值,则为该类型的默认值(str的默认值是‘ ’),如果构造函数的括号中出现新的值,就将这个值转为指定类型的新对象(原对象本身不受影响,进行转换后返回新的对象)。

    任何时候输入“help(对象名)”,Python将提供该对象的帮助信息

    ###两种相等
    python中:
    ==检查两个名称引用的对象是否具有相同的值
    is检查两个名字是否引用同一个对象(具有相同的ID,通过id即可获取ID信息)

    多重赋值,交换两个变量的值:
    aInt,bInt=bInt,aInt

    python中的缩进,因为缩进代表代码的结构。常见的方式是使用4个空格,这与缩进等价。需要注意的是不要混淆制表符和空格,在python中请使用空格。

    while与break,continue的结合:使用break是为了跳出while循环体,使用continue是为了跳过while循环体剩下的部门,直接进行下一次循环的判断

    --------------------
    常见函数:
    raw_input():输入,返回的是一个字符串类型
    random模块中的random.randint(0,100)随机数函数,生成0到100的一个随机数
    range函数,生成数字序列(集合),range(start,end,stepLength)

    例子:

    ------------------------------------------
    -----------字符串----------------------------

    (1)

    字符串类型是python提供的数据集类型之一,数据集类型是由一组python对象构成的单个对象。
    一种构造方式是通过字符串构造函数str,另一种方式是通过两个单引号‘’或两个双引号“”

    三重引号字符串:如果字符串跨行,行与行之间的回车符也将被保存下来。采用三重引号字符串会将整个段落作为单个字符串进行处理,包含段落中的格式信息。
    longStr2=“when you’re chewing on life’s gristle
    Don’t grumble, give a whistle”
    print longStr2
    上述就将报错,因为“”不具有跨行保存的功能

    制表符
    回车符

    (2)
    字符序列
    字符串对象定义为字符序列,字符在字符串中的问题称为索引,python用[]表示索引运算符
    如果想从末端建立索引,从-1开始计数,例如-1表示字符串最后一个字符,-2表示字符串倒数第二个字符
    索引与分片
    Str[start,end]:会截取字符串Str的第start个位置到第end-1个位置的元素(左开右闭区间)

    helloString[6 :]:表示第六个到末尾
    helloString[: 5]:表示起点到第4个

    例子:

    (3)字符串的格式化打印

    (4)迭代器
    由于经常要检查索引和字符,因此python提供了enumerate迭代器,实现查找字符对应的索引和字符本身的功能

    将两个值放在一个元组中:

    (5)处理字符串
    在空格处分割方法的调用:split(” “)
    在每一个逗号处分割的方法调用:split(“,”)
    默认采用空格进行分割,所依一般都使用不带参数的split方法
    记住,字符串是不可改变的,所以不能从字面上删除原始字符串的任何部分,托福考多少分相反,split只产生部分副本。

    结果:

    从上面可以观察看出,split方法将一个字符串变为一个序列进行输出,而不再是字符串

    回文:

    回文串的特点是前向读取和后向读取得到相同的内容

    例子:

    ------------------------------------------------
    -------------------函数---------------------------
    函数定义由关键字def开始。Python中函数定义的方式类似于赋值语句。执行def语句,在命名空间中创建新的名字和与名字相关联的新对象(函数对象)。Python中所有东西都是对象,函数也不例外(函数必须在调用前先定义)。如果不为函数提供return语句,在默认情况下,将返回一个特殊的Python值None,它代表没有值,也是一种无限值,可以将一个变量和返回值None关联起来并打印验证(一般格式化输出喜欢用一个函数封装起来)。
    例如:

    open()函数:两个字符串参数,第一个字符串参数是文件的名称,第二个参数是指出对文件进行什么操作(“r”是读操作,“w”是写操作)并创建文件句柄。文件句柄是与文件内容相关联的对象,可以用文件句柄遍历文件内容

    strip(str)函数用于删除字符串开头和结尾的指定字符,例如strip(“.,”)则删除开头和结尾的”,”与”.”

    例子:

    -----------------------------------------------
    ----------------------列表和元组--------------------
    可以使用构造函数或者方括号[]来构造列表
    使用构造函数创建列表需要注意:参数必须是一个集合,雅思查分参数集合中的每个元素都将添加到列表中
    同字符串一样,列表也是序列类型,但是也有不同点,主要在如下两方面:
    (1)列表可以包含任意类型的元素,甚至不同类型的元素也可以混在同一列表中
    (2)列表是可变类型,意味着在创建列表对象后,还能发生变化

    列表类型也拥有只作用于列表类型的方法:
    (1)不修改列表的方法:
    index(x):返回列表中与x相等的第一个元素的索引
    count(x):返回列表中x出现的次数
    (2)修改列表的方法:

    append(x):在列表的尾部添加元素,列表的长度加1
    pop():删除列表末尾的元素,并返回此元素
    extend(C):需要一个集合作为参数。将此参数集合中的每个元素添加到列表的末尾,从而扩展列表。
    insert(i,x):在指定位置i插入元素x
    remove(x):删除列表中第一个值为x的元素
    sort():对序列中的元素进行排序
    reverse():将列表中的元素反向

    例如:

    结果:

    序列的方法会直接在对象上进行分割。不同于字符串方法一般具有返回值,由于序列的可变性,方法可以直接对序列进行修改,因此方法并不需要具有返回值

    ----使用join方法在列表和字符串之间转换---

    场景:常常需要通过split从字符串中取出一部分,处理片中的元素,然后再把处理结果放回去。对于这种情况,一种有效方式是采用字符串的join方法。

    例如调用:”.”.join([“a”,”b”,”c”]),用冒号(:)作为分隔符,连接所有字符,生成字符串”a:b:c”

    sorted函数(注意,不是方法),可以对任意集合类型进行排序,会转化为列表再进行排序
    sorted函数原理:(1)使用list构造器将字符串转为字符列表(2)对列表排序
    若想变回字符串再使用join方法进行合并

    ——————–可变对象及引用—————————
    当两个名字引用同一个可变对象时,会发生一些有趣的事情。

    对list1做的改变也会影响list2,因为两个名字都引用了同一个列表(可变对象)
    如果想复制列表,可以使用字符串复制分片[:](从头到尾复制)。明确的说,石家庄雅思创建副本意味着Python将创建一个新的对象副本,因此这种修改不会影响其他对象,同样,is运算符显示这些名字没有引用同一对象,所以得到的结果是假。

    可变与不可变:
    当变量引用不可变对象时,使用该对象的任何操作(连接,替换,去除等)等将创建新对象,而不会改变引用的对象。与此相反,变量引用可变对象时,或者可能创建新的对象,或者改变被引用对象的本身,这取决于进行的是何种操作。例如:

    得到的结果都是[1,2,3,9]。然而,前者创建一个新对象,后者却没有。

    深拷贝与浅拷贝

    • Python中对象的赋值都是进行对象引用(内存地址)传递
    • 使用copy.copy(),可以进行对象的浅拷贝,它复制了对象,但对于对象中的元素,依然使用原始的引用.
      需要导入copy模块:
    • 如果需要复制一个容器对象,以及它里面的所有元素(包含元素的子元素),可以使用copy.deepcopy()进行深拷贝
    • 对于非容器类型(如数字、字符串、和其他’原子’类型的对象)没有被拷贝一说

    -----未完待续

  • 相关阅读:
    BZOJ 3744 Gty的妹子序列
    BZOJ 3872 Ant colony
    BZOJ 1087 互不侵犯
    BZOJ 1070 修车
    BZOJ 2654 tree
    BZOJ 3243 向量内积
    1003 NOIP 模拟赛Day2 城市建设
    CF865D Buy Low Sell High
    CF444A DZY Loves Physics
    Luogu 4310 绝世好题
  • 原文地址:https://www.cnblogs.com/zhangyanran/p/10081950.html
Copyright © 2020-2023  润新知