Python基础第三节

可变字符串

引入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=[x
2 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不能作为字典的键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值