序列类型(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

转载请注明本网址。