序列类型(sequence)有六种:
unicode sequences(str),
byte sequences (bytes),
byte arrays(bytearray objects),
list,
tuple,
range objects。
sequence类型都支持的通用操作:
成员检查:in、not in
连接:+
复制:*
索引取值:s[i]
切片:s[i:j]
长度检查:len(s)
最小值:min(s)
最大值:max(s)
获取成员索引值:s.index(i)
字符串统计:s.count(i)
成员检查:in、not in
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
s = "hello"
b = b"hello"
b_array = bytearray("hello", encoding="utf-8")
l = [1,2,3,4,5]
t = (1,2,3,4,5)
r = range(6)
print(type(s))
if "o" in s:
print("字符串s含有成员o")
print(type(b))
if b"o" in b:
print("字节b含有成员o")
print(type(b_array))
if b"o" in b_array:
print("字节数组b_array含有成员o")
print(type(l))
if 3 in l:
print("列表l含有成员3")
print(type(t))
if 3 in t:
print("元组t含有成员3")
print(type(r))
if 3 in r:
print("range对象r含有成员3")
|
执行以上程序会输出如下结果:
1
2
3
4
5
6
7
8
9
10
11
12
|
<class 'str'>
字符串s含有成员o
<class 'bytes'>
字节b含有成员o
<class 'bytearray'>
字节数组b_array含有成员o
<class 'list'>
列表l含有成员3
<class 'tuple'>
元组t含有成员3
<class 'range'>
range对象r含有成员3
|
str,bytes,bytearray类型的成员检查检查,也适用于子串。
例如:
1
2
3
4
5
6
7
8
9
10
11
12
|
s = "hello"
b = b"hello"
b_array = bytearray("hello", encoding="utf-8")
print(type(s))
if "el" in s:
print("字符串s含有字串el")
print(type(b))
if b"el" in b:
print("字节b含有字串el")
print(type(b_array))
if b"el" in b_array:
print("字节数组b_array含有字串el")
|
执行以上程序会输出如下结果:
1
2
3
4
5
6
|
<class 'str'>
字符串s含有字串el
<class 'bytes'>
字节b含有字串el
<class 'bytearray'>
字节数组b_array含有字串el
|
连接 +
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
s1 = "hello"
s2 = "world"
b1 = b"hello"
b2 = b"world"
b_array1 = bytearray("hello", encoding="utf-8")
b_array2 = bytearray("world", encoding="utf-8")
l1 = [1,2,3,4,5]
l2 = [5,6,7,8]
t1 = (1,2,3,4,5)
t2 = (5,6,7,8)
print("s1+s2的值:",s1+s2)
print("b1+b2的值:",b1+b2)
print("b_array1+b_array2的值:",b_array1+b_array2)
print("l1+l2的值:",l1+l2)
print("t1+t2的值:",t1+t2)
|
执行以上程序会输出如下结果:
1
2
3
4
5
|
s1+s2的值: helloworld
b1+b2的值: b'helloworld'
b_array1+b_array2的值: bytearray(b'helloworld')
l1+l2的值: [1, 2, 3, 4, 5, 5, 6, 7, 8]
t1+t2的值: (1, 2, 3, 4, 5, 5, 6, 7, 8)
|
range对象不支持连接 + 操作
例如:
1
2
3
4
5
6
7
|
r1 = range(5)
r2 = range(10)
print("r1+r2的值:",r1+r2) # 报错
Traceback (most recent call last):
File "main.py", line 4, in <module>
print("r1+r2的值:",r1+r2)
TypeError: unsupported operand type(s) for +: 'range' and 'range'
|
复制 *
例如:
1
2
3
4
5
6
7
8
9
10
11
|
s = "hello"
b = b"hello"
b_array = bytearray("hello", encoding="utf-8")
l = [1,2,3,4,5]
t = (1,2,3,4,5)
print("s*2的值:",s*2)
print("b*2的值:",b*2)
print("b_array*2的值:",b_array*2)
print("l*2的值:",l*2)
print("t*2的值:",t*2)
|
执行以上程序会输出如下结果:
1
2
3
4
5
|
s*2的值: hellohello
b*2的值: b'hellohello'
b_array*2的值: bytearray(b'hellohello')
l*2的值: [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
t*2的值: (1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
|
range对象不支持复制操作
例如:
1
2
3
4
5
6
|
r = range(6)
print("r*2的值:",r*2) #报错
Traceback (most recent call last):
File "main.py", line 2, in <module>
print("r*2的值:",r*2)
TypeError: unsupported operand type(s) for *: 'range' and 'int'
|
索引取值 s[i]
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
s = "hello"
b = b"hello"
b_array = bytearray("hello", encoding="utf-8")
l = [1,2,3,4,5]
t = (1,2,3,4,5)
r = range(6)
print("s[1]的值:",s[1])
print("b[1]的值:",b[1])
print("b_array[1]的值:",b_array[1])
print("l[1]的值:",l[1])
print("t[1]的值:",t[1])
print("r[1]的值:",r[1])
|
执行以上程序会输出如下结果:
1
2
3
4
5
6
|
s[1]的值: e
b[1]的值: 101
b_array[1]的值: 101
l[1]的值: 2
t[1]的值: 2
r[1]的值: 1
|
切片 s[i:j]
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
s = "hello"
b = b"hello"
b_array = bytearray("hello", encoding="utf-8")
l = [1,2,3,4,5]
t = (1,2,3,4,5)
r = range(6)
print("s[1:3]的值:",s[1:3])
print("b[1:3]的值:",b[1:3])
print("b_array[1:3]的值:",b_array[1:3])
print("l[1:3]的值:",l[1:3])
print("t[1:3]的值:",t[1:3])
print("r[1:3]的值:",r[1:3])
|
执行以上程序会输出如下结果:
1
2
3
4
5
6
|
s[1:3]的值: el
b[1:3]的值: b'el'
b_array[1:3]的值: bytearray(b'el')
l[1:3]的值: [2, 3]
t[1:3]的值: (2, 3)
r[1:3]的值: range(1, 3)
|
注意: 索引取值时,当试图访问一个超过索引值的成员将导致IndexError。但是当试图访问一个超出长度数作为开始索引的切片将不会导致IndexError,并且将仅仅返回一个空对象。
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
s = "hello"
b = b"hello"
b_array = bytearray("hello", encoding="utf-8")
l = [1,2,3,4,5]
t = (1,2,3,4,5)
r = range(6)
print(s[10:20]) # 输出空字符串
print(type(s[10:20])) # 输出<class 'str'>
print(b[10:20]) # 输出b''
print(type(b[10:20])) # 输出<class 'bytes'>
print(b_array[10:20]) # 输出bytearray(b'')
print(type(b_array[10:20])) # 输出<class 'bytearray'>
print(l[10:20]) # 输出[]
print(type(l[10:20])) # 输出<class 'list'>
print(t[10:20]) # 输出()
print(type(t[10:20])) # 输出<class 'tuple'>
print(r[10:20]) # 输出range(6, 6)
print(type(r[10:20])) # 输出<class 'range'>
|
执行以上程序会输出如下结果:
1
2
3
4
5
6
7
8
9
10
11
|
<class 'str'>
b''
<class 'bytes'>
bytearray(b'')
<class 'bytearray'>
[]
<class 'list'>
()
<class 'tuple'>
range(6, 6)
<class 'range'>
|
长度检查 len(s)
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
s = "hello"
b = b"hello"
b_array = bytearray("hello", encoding="utf-8")
l = [1,2,3,4,5]
t = (1,2,3,4,5)
r = range(6)
print("s的长度:",len(s))
print("b的长度:",len(b))
print("b_array的长度:",len(b_array))
print("l[的长度:",len(l))
print("t的长度:",len(t))
print("r的长度:",len(r))
|
执行以上程序会输出如下结果:
1
2
3
4
5
6
|
s的长度: 5
b的长度: 5
b_array的长度: 5
l[的长度: 5
t的长度: 5
r的长度: 6
|
最小值 min(s) 最大值 max(s)
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
s = "hello"
b = b"hello"
b_array = bytearray("hello", encoding="utf-8")
l = [1,2,3,4,5]
t = (1,2,3,4,5)
r = range(6)
print("s的最小值:",min(s))
print("b的最小值:",min(b))
print("b_array的最小值:",min(b_array))
print("l[的最小值:",min(l))
print("t的最小值:",min(t))
print("r的最小值:",min(r))
print("s的最大值:",max(s))
print("b的长度:",max(b))
print("b_array的最大值:",max(b_array))
print("l的最大值:",max(l))
print("t的最大值:",max(t))
print("r的最大值:",max(r))
|
执行以上程序会输出如下结果:
1
2
3
4
5
6
7
8
9
10
11
12
|
s的最小值: e
b的最小值: 101
b_array的最小值: 101
l[的最小值: 1
t的最小值: 1
r的最小值: 0
s的最大值: o
b的长度: 111
b_array的最大值: 111
l的最大值: 5
t的最大值: 5
r的最大值: 5
|
获取成员索引值 s.index(i) 字符串统计 s.count(i)
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
s = "hello"
b = b"hello"
b_array = bytearray("hello", encoding="utf-8")
l = [1,2,3,4,5]
t = (1,2,3,4,5)
r = range(6)
print("s.index('e')的值:",s.index("e"))
print("b.index(b'e')的值:",b.index(b"e"))
print("b_array.index(b'e')的值:",b_array.index(b"e"))
print("l.index(2)的值:",l.index(2))
print("t.index(2)的值:",t.index(2))
print("r.index(2)的值:",r.index(2))
print("s.count('l')的值:",s.count("l"))
print("b.count(b'l')的值:",b.count(b"l"))
print("b_array.count(b'l')的值:",b_array.count(b"l"))
print("l.count(2)的值:",l.count(2))
print("t.count(2)的值:",t.count(2))
print("r.count(2)的值:",r.count(2))
|
执行以上程序会输出如下结果:
1
2
3
4
5
6
7
8
9
10
11
12
|
s.index('e')的值: 1
b.index(b'e')的值: 1
b_array.index(b'e')的值: 1
l.index(2)的值: 1
t.index(2)的值: 1
r.index(2)的值: 2
s.count('l')的值: 2
b.count(b'l')的值: 2
b_array.count(b'l')的值: 2
l.count(2)的值: 1
t.count(2)的值: 1
r.count(2)的值: 1
|
转载请注明本网址。