序列通用操作(字符串、列表、元祖)
目录
9.list()/tuple()/str():序列转换函数
1.索引
序列是有顺序的集合,都可以通过索引取得对应的值
列表:
>>> a = [1,2,3,4]
>>> a[0]
1
>>> a[-1]
4
元祖:
>>> a = (1,2,3,4)
>>> a[-1]
4
>>> a[0]
1
字符串:
>>> s = 'abcdefg'
>>> s[0]
'a'
>>> s[1]
'b'
2.切片:正序、倒序、间隔
说明:
l[start:end:span]
遍历 [start,end),间隔为 span,当 span>0 时正序遍历, 当 span<0 时,逆着遍历。start 不输入则默认为 0,end 不输入默认为长度。
以下以列表为例,字符串和元组一样:
代码示例:切片获取序列的值
>>> a = [1,2,3,4,5,6,7,8,9]
>>> a[:] #正序
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[::2] #正序,间隔为1
[1, 3, 5, 7, 9]
>>>
>>> a[::-1] #逆序
[9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> a[::-2]#逆序,间隔为1
[9, 7, 5, 3, 1]
>>> a[1:3] #正序,取部分值
[2, 3]
>>> a[-2:-5]#逆序且指定end时,必须存在span
[]
>>> a[-2:-5:-1] #正序,取部分值
[8, 7, 6]
>>>
代码示例:越界不会抛异常
>>> a = [1,2,3,4,5,6,7,8,9]
>>> a[0::-1]
[1]
>>> a[0:8:-1]
[]
>>> a[-1:-1:-1]
[]
>>> a[0:-1:-1]
[]
>>> a[-1:0:-1]#取不到索引为0的元素,因为是开区间,不包括end所在的位置
[9, 8, 7, 6, 5, 4, 3, 2]
>>> a[11:] #越界返回空列表,不会抛异常
[]
切片赋值:可多可少可正好
序列中由等号左边[]中指定的区间由等号右边的值整体替换
a = [[-1,-2],2,3,-3,0,-5,5]
>>> a
[[-1, -2], 2, 3, -3, 0, -5, 5]
>>> a[0:2]=[1,2,3]
>>> a
[1, 2, 3, 3, -3, 0, -5, 5]
>>> a[0:2]=[-1]
>>> a
[-1, 3, 3, -3, 0, -5, 5]
3.+操作符:序列的连接
>>> [1]+[2,3,4]
[1, 2, 3, 4]
>>> ('a',)+('b','c')
('a', 'b', 'c')
>>> 'a'+'1'
'a1'
>>>
>>> {1:2}+{3:4} #字典不能直接+操作
Traceback (most recent call last):
File "<stdin>", line 1, in <module>TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
4.*操作符:序列的复制
>>> [1,2,3]*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> ('hello',)*3
('hello', 'hello', 'hello')
>>> 'aa'*3
'aaaaaa'
>>>
5.len(seq):获取序列中元素的个数
>>> len([1,2,[3,4],'a'])
4
>>> len((1,2,[3,4],'a'))
4
>>> len('hello')
5
6.max(seq):获取序列中最大值
>>> max([1,2,3,9,'a'])#有数字和字母时是按字母的ascii码比较
'a'
>>> max((1,2,3,9,'a',1.9))
'a'
>>> max('anb890')
'n'
>>> max({1:'a',2:'b'}) #字典默认是取key的最大值
2
7.min(seq):获取序列中的最小值
>>> min([1,2,3,9,'a'])
1
>>> min((1,2,3,9,'a',1.9))
1
>>> min('anb890')
'0'
>>> min({1:'a',2:'b'})
1
8.in/not in:判断元素是否在序列中
>>> 1 in [1,2,3]
True
>>> 1 not in [1,2,3]
False
>>> 1 not in (1,2,3)
False
>>> 1 in (1,2,3)
True
>>> 'a' in 'apple'
True
>>> 'b' in 'apple'
False
>>>
>>> 1 in {1:'a',2:'b'}#字典默认判断的是元素是否在key中
True
9.list()/tuple()/str():序列转换函数
>>> list('abc') #字符串转列表
['a', 'b', 'c']
>>> list(('a','b','c'))#元祖转列表
['a', 'b', 'c']
>>> tuple('abc')#字符串转元祖
('a', 'b', 'c')
>>> tuple([1,2,3,4])#列表转列表
(1, 2, 3, 4)
>>> str(123)#将数字转换成字符串
'123'
>>> str([1,2,3])#将列表整体转换为一个字符串
'[1, 2, 3]'