序列类型
序列类型包括那些python类呢?
对 list 、tuple和string
这三种类都是索引为非负的有序对象集合。
字符串是字符的序列,列表和元组是任意python对象的序列。
字符串和元组是不可变的,而列表是支持插入、删除和替换的。
这三种元素都支持迭代的。
也就是说三种元素都可以进行迭代操作,像下面这样:
>>> string="adada"
>>> for i in string:
... print(i)
...
a
d
a
d
a
>>> ls=[1,2,3]
>>> for i in ls:
... print(i)
...
1
2
3
>>> tpl=(1,2,3)
>>> for i in tpl:
... print(i)
...
1
2
3
序列类型通用的操作
首先是索引和切片操作,以下三种操作都可以使用:
s[i] 返回序列索引为i的元素
s[i:j] 返回序列切片
s[i:k:z] 返回扩展切片
还有就是len(s)、all(s)和any(s) 三个操作
len是求长度
all是判断是否全部为True
any判断是否存在True
对于可变的序列,可以将通用的三个操作与=和del结合进行修改和删除
例如:
s[i] =1
s[i:j] =t
s[i:k:z] =t
del s[i]
del s[i:j]
del s[i:k:z]
上面已经讲了序列共同的操作,那每种序列单独的操作方法呢?
首先讲一下list:
list的一般操作这里总结为 增,删、查、改和排序。
对应下来的实例函数就是(append\extend\insert)、(pop\remove)、(count\index)、(s[i]=t)和(sort\reverse)
"增" 的三种方法中insert 和 append是插入单个对象的,extend是进行列表拼接的。
insert是将对象插入指定位置,append是将对象插入列表的末尾;extend拼接也是将列表拼接到列表的末尾。
>>> a=[1,2,3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>> a.insert(0,5)
>>> a
[5, 1, 2, 3, 4]
>>> a.extend([6,7])
>>> a
[5, 1, 2, 3, 4, 6, 7]
"删" 的pop和remove输入的参数不一样,pop输入的是索引,remove输入的是对象。
pop会删除指定索引的对象,remove会删除与指定对象相同的列表的第一个对象。
>>> a
[5, 1, 2, 3, 4, 6, 7]
>>> a.pop()
7
>>> a
[5, 1, 2, 3, 4, 6]
>>> a.pop(0)
5
>>> a
[1, 2, 3, 4, 6]
>>> a.remove(2)
>>> a
[1, 3, 4, 6]
"查" 的count和index分别是查个数和对象对应的最小的索引
count是查询列表中所含对象的个数
index是查询对象在列表中的最小索引,并且可以限制查询的范围
>>> a=[1,2,3,1,2,3]
>>> a.count(1)
2
>>> a.index(2)
1
>>> a.index(2,2,len(a))
4
"改" 的方式很简单,直接利用赋值语句就行了
>>> a
[1, 2, 3, 1, 2, 3]
>>> a[0]=100
>>> a
[100, 2, 3, 1, 2, 3]
"排序" 的reverse并不是对列表进行排序,而是对原有的序列进行颠倒,
但为了方便分类就把reverse归为这一类了
sort是对数列进行真正的排序,可以设定的参数为key和reverse.
key是用于排序的关键字,你可以赋予key lambda这样的匿名函数,通过函数值排序,
reverse是排序后是否颠倒顺序,如果是就设为True,不是就设为False。
>>> a
[100, 2, 3, 1, 2, 3]
>>> a.reverse()
>>> a
[3, 2, 1, 3, 2, 100]
>>>
>>> a
[3, 2, 1, 3, 2, 100]
>>> a.sort(key=lambda x: x*2)
>>> a
[1, 2, 2, 3, 3, 100]
>>> a
[1, 2, 2, 3, 3, 100]
>>> a.sort(key=lambda x:-x)
>>> a
[100, 3, 3, 2, 2, 1]
>>> a
[100, 3, 3, 2, 2, 1]
>>> a.sort(key=lambda x: x**2 - 10*x,reverse=True)
>>> a
[100, 1, 2, 2, 3, 3]
>>>