Python基础第三节

    技术2022-07-13  72

    可变字符串

    引入io模块,用io.StringIo()生成可变的新字符串。 示例:s=‘abcde’ sio=io.StringIo(s) sio.getvalue(): 输出’abcde’ sio.seek(5): 输出5 sio.write(‘g’): 输出1 sio.getvalue(): 输出’abcdg’

    运算符总结

    比较运算符:可连用,如: a=4 3<a<10 输出:True 位操作符:按位或 |, 1、0得1,0、0得0,1、1得1 按位与 &,1、0得0,0、0得0,1、1得1 按位异或 ^,1、0得1,0、0得0,1、1得0 左移<,左移一位相当于乘以2,3<<2相当于3*4 右移>,右移一位相当于除以2,8>>2相当于8//4 运算符优先级问题: 1.乘除优先加减; 2.位运算和算术运算>比较运算符>赋值运算符 3.复杂表达式务必用小括号组织

    序列

    在内存中,序列是一块用来存放多个值的连续的内存空间。 序列中存储的是对象的地址,而非对象的值。 常见序列结构:字符串、列表、元组、字典、集合

    列表(LIST)

    列表对象的常用方法

    list.append(x): 将元素x增加到列表尾部 list.extend(alist): 将列表alist中的所有元素加到列表尾部 list.insert(index,x): 在列表指定位置index处增加元素x list.remove(x): 在列表中删除首次出现的指定元素x list.pop([index]): 删除并返回列表指定位置index处的元素。 默认为最后一个元素。 list.clear(): 删除列表中所有元素,但不删除列表对象 list.index(x): 返回第一个x的索引位置。 若列表中不存在x则抛出异常。 list.count(x): 返回指定元素x在列表中出现次数 len(list): 返回列表中元素个数 list.reverse(): 列表中所有元素原地翻转 list.sort(): 所有元素原地排序。默认升序 list.sort(reverse=True): 降序排序 list.copy(): 返回列表对象的浅拷贝

    列表创建

    **list()可将任何可迭代的数据转换为列表。**如: a=list(range(10)): range(10)为range对象,list()将其转换为包含1—9九个元素的列表; b=list(range(3,9,2)): 输出[3,5,7] c=list(range(15,10,-1): 输出[15,14,13,12,11] d=list(range(-1,-9,-2): 输出[-1,-3,-5,-7] s=list(‘abcd’): list将字符串转换为[‘a’,‘b’,‘c’,‘d’] **推导式生成列表。**如: a=[x2 for x in range(5)]: 输出[2,4,6,8] b=[x2 for x in range(5) if x%2==0]: 输出[4,8]

    列表元素的增加

    增删操作可能涉及到列表元素的大量移动,效率较低。因此,除非必要,一般只在列表尾部增删元素。 append方法: 原地修改列表对象,真正在列表尾部增加新元素,速度快。 +运算符操作: 并非真正在尾部添加元素,而是要创建新的列表对象,将原列表元素和新列表元素依次复制进新列表。涉及大量复制操作,若需要操作的元素个数过多,不推荐使用此方法。 extend方法: 将目标列表所有元素添加至本列表尾部。原地操作,不创建新列表对象,效率较高。 insert()插入元素: 将指定元素插入至列表对象的任意指定位置,会使插入位置后的所有元素向后移动,影响速度。 类似函数还有remove(), pop(), del() 乘法扩展: 新列表元素是原列表元素的多次重复。 同样适用乘法扩展的还有字符串、元组。

    列表元素的删除

    del list[i]: 删除列表指定位置元素。 将该元素后面的所有元素拷贝至前一个位置。 list.pop([index]): 删除并返回列表指定位置index处的元素。 默认为最后一个元素。 list.remove(x): 在列表中删除首次出现的指定元素x

    列表元素的访问

    a.index(30,5,7): 返回索引位置5-7的区间内,第一次出现元素30的索引位置。 判断列表中是否存在某元素: count(x): 返回0则为不存在 x in list: True or False x not in list: True or False

    列表切片

    方法与字符串切片一致。参见:https://blog.csdn.net/dayouzi66666/article/details/107075385

    列表排序

    不生成新列表的方法: list.sort(): 所有元素原地排序。默认升序 list.sort(reverse=True): 降序排序 random.shuffle(list): 乱序排列 生成新列表的方法: alist=sorted(list): 正序 blist=sorted(list,reverse=True): 降序 reversed()返回迭代器: reversed(list)并不返回列表对象,而是返回一个逆序排列的迭代器对象。此迭代器只能用一次,第一次指针从表尾移动至表头,第二次指针将无处可移。 例:a=[1,2,3,4] b=reversed(a) #b为迭代器对象 list(b): [4,3,2,1] list(b): [] #此迭代器无法二次使用

    元组(tuple)

    元组支持的操作: 1.索引访问 2.切片操作 3.连接操作 4.成员关系操作 5.比较运算操作 6.计数:元组长度len(), 最大值max(), 最小值min(),求和sum()等。

    元组创建

    a=(1,2,3),等同于a=1,2,3 若a中仅有1个元素,则元素后应加逗号,即a=(2,)或a=2,,以免被解释器解释为整数。 也可通过tuple()创建元组或将字符串、列表、其他序列类型、迭代器等转换为元组。

    元组排序

    只能使用内置函数sorted(),生成新的元组对象

    zip

    zip(list1,list2…)将多个列表对应位置的元素组合成元组,并返回这个zip对象。注意,返回的是zip对象,而非列表或元组对象。

    生成器推导式创建元组

    s=(s*2 for s in range(5)) #生成生成器对象 tuple(s): (2,4,6,8) list(s): [] #只能访问一次元素,第二次就为空了,只能再生成一次 可通过生成器对象的__next__()方法,依次访问对象中的元素。如: s.next(): 0 s.next(): 2 s.next(): 4

    元组总结:

    1.核心特点:不可变序列 2.元组的访问和处理速度比列表快 3.元组、整数、字符串可以作为字典的键(key),因其不可变性。而list不能作为字典的键。

    Processed: 0.010, SQL: 9