使用io.StringIO对象或array模块。
>>> import io#导入io模块 >>> s="hello,sxt" >>> sio=io.StringIO(s)#使用函数 >>> sio <_io.StringIO object at 0x000001F75CD490D8> >>> sio.getvalue()#查看可变字符串 'hello,sxt' >>> sio.seek(7)#找到并定位索引7位置 7 >>> sio.write("g")#修改为“g” 1 >>> sio.getvalue()#查看变化后可变字符串 'hello,sgt'Python允许这种形式 位运算实例 移位实例
>>> a=3 >>> a<<1#a*2(2的1次方) 6 >>> a<<3#a*8(2的3次方) 24 >>> a=12 >>> a>>2#a除以2的平方的商(int型) 3 >>> a>>3#a除以2的3次方的商(int型) 1小结: 1.比较运算符可以连用,并且含义和我们日常完全一致。 2.位操作 注:与C和JAVA不一样,Python不支持自增(++)和自减(–)
1.乘除优先加减 2.位运算和算术运算>比较运算符>逻辑运算符
常用序列结构:字符串、列表、元组、字典、集合 注:存储的是地址,而不是值。
列表的元素可以各不相同,可以是任意类型。 列表大小可变,根据需要随时增加或缩小。
使用list()可以将任何可迭代的数据转化成列表。
range()创建整数列表 range([start,],end[,step]) >>> list(range(0,10,1)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(3,20,2)) [3, 5, 7, 9, 11, 13, 15, 17, 19] >>> list(range(20,3,-1)) [20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4] >>> list(range(-10,-20,-2)) [-10, -12, -14, -16, -18] 推导式生成列表 >>> a=[x*2 for x in range(5)] >>> a [0, 2, 4, 6, 8] >>> a=[x*2 for x in range(100) if x%9==0] >>> a [0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198]一般只在列表的尾部添加和删除元素,这会大大提高列表的操作效率。 列表元素的增加
append()速度最快,不创建新对象 >>> a=[1,13] >>> id(a) 2161927160776 >>> a.append(20) >>> a [1, 13, 20] >>> id(a) 2161927160776 +运算符操作 创建新对象,不推荐 >>> a=a+[50] >>> a [1, 13, 20, 50] >>> id(a) 2161927160712 extend()不创建新对象,速度快 >>> a [1, 13, 20, 50] >>> a.extend([1,2]) >>> a [1, 13, 20, 50, 1, 2] insert()插入元素 影响速度,不推荐 >>> a.insert(2,100) >>> a [1, 13, 100, 20, 50, 1, 2]列表元素的删除
del删除 >>> a=[10,20,30] >>> a [10, 20, 30] >>> del a[1] >>> a [10, 30] pop()方法 pop()删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个元素。 >>> a=[1,2,3,4,5] >>> b=a.pop() >>> b 5 >>> a [1, 2, 3, 4] remove()方法 删除首次出现的指定元素,若不存在该元素,抛出异常。 >>> a=[20,30,40,50,60] >>> a.remove(30) >>> a [20, 40, 50, 60] >>> a.remove(100) Traceback (most recent call last): File "<pyshell#74>", line 1, in <module> a.remove(100) ValueError: list.remove(x): x not in list通过索引直接访问元素 我们可以通过索引直接访问元素。缩印的区间在[0,列表长度-1]这个范围。超过这个范围则会抛出异常。 a.index()获得指定元素在列表中首次出现的索引 a.count()获得指定元素在列表中出现的次数 len(a)返回列表长度 成员资格判断 in not in
random.shuffle(a)
>>> import random >>> random.shuffle(a) >>> a [3, 1, 5, 2] >>> random.shuffle(a) >>> a [5, 2, 3, 1] 建新列表的排序 sorted(a) >>> a [5, 2, 3, 1] >>> id(a) 2161927206472 >>> a=sorted(a) >>> a [1, 2, 3, 5] >>> id(a) 2161927160776 >>> a=sorted(a,reverse=True) >>> a [5, 3, 2, 1]reversed()返回迭代器 不对原列表做任何修改,只是返回一个逆序排列的迭代器对象。
>>> a [5, 3, 2, 1] >>> c=reversed(a) >>> c <list_reverseiterator object at 0x000001F75CE2E4A8> >>> list(c) [1, 2, 3, 5]max() min() sum()
列表属于可变序列,可以任意修改列表中的元素。元组属于不可变序列,不能修改元组中的元素。
直接创建 >>> a=(10,20,30)#直接创建元组 >>> a (10, 20, 30) >>> type(a) <class 'tuple'> >>> a=10,20,30#直接创建元组 >>> a (10, 20, 30) >>> type(a) <class 'tuple'> >>> b=(1) >>> type(b) <class 'int'> >>> b=(1,)#这种方式才是元组 >>> type(b) <class 'tuple'> tuple() >>> c='asdf' >>> c=tuple(c) >>> c ('a', 's', 'd', 'f') >>> tuple([1,2,3]) (1, 2, 3) >>> tuple(range(3)) (0, 1, 2)元组的访问和处理速度比列表快!!
生成器推导器创建元组 只能访问一次元素,第二次为空,类似指针。