之前提到了python中的几种标准类型,这里对这几种标准类型简单总结一下,作为学习笔记记录。

在之前文章中提到的关于成员运算符的内容中,出现过序列类型的说法,那么什么是序列类型?

序列类型

序列(sequence)是指一段可以存放多个值的连续内存空间,这些值按照一定的顺序排列,可以通过每个值所在位置的编号(索引值)来进行访问。

在python中,序列类型包括string,list,tuple,set和dict。一般说来,序列类型都支持索引,切片,相加,相乘,成员操作,但是比较特殊的是,set和dict不支持索引,切片,相加,相乘操作。

索引操作

索引操作是指该序列类型可以通过下标值实现元素的随机访问。

a = 'abcdefghigk'
b = [1,2,3,4,5,6,7,8,9]
c = (1,2,3,4,5,6,7,8,9)

print(a[3])
print(b[4])
print(c[5])
print(a[-3])
print(b[-4])
print(c[-5])

结果为:

d
5
6
i
6
5

序列类型的索引操作有两个方向,正向从0开始,len-1结束,反向从-1开始,-len结束。

切片操作

切片操作是指通过特定的语法可以访问一定范围内的元素,从而生成新的序列。语法为:

var[start:end:step]

各个参数的含义为:

  • var表示序列对象
  • start表示切片的起始位置,包含此位置,可以省略,省略时默认为0
  • end表示切片的终止位置,不包含此位置,可以省略,省略时默认为末尾位置
  • step表示切片的步长,可以省略,省略时默认为1,第二个冒号也可省略
a = [1,2,3,4,5,6,7,8,9]

print(a[1:6])
print(a[1:6:2])
print(a[:6:2])
print(a[1::2])
print(a[:])
print(a[::])
print(a[::-1])

结果为:

[2, 3, 4, 5, 6]
[2, 4, 6]
[1, 3, 5]
[2, 4, 6, 8]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 1]

需要注意的时,当step=-1时,默认的起始位置和终止位置会发生改变。

相加操作

相加操作是指相同序列类型之间可以进行连接

a = [1,2,3,4]
b = [3,4,5,6]

print(a + b)

相乘操作

相乘操作是指对序列类型重复n次并添加到原序列上。

a = [1,2,3,4]
print(a * 3)

结果为:

[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]

成员操作

成员操作是指可以利用成员运算符判断元素是否存在于某序列类型。

a = 'abcdefghigk'
b = [1,2,3,4,5,6,7,8,9]
c = (1,2,3,4,5,6,7,8,9)
d = {1,2,3,4}
e = {1:'tom',2:'jack'}

print('a' in a)
print(1 in b)
print(1 in c)
print(1 in d)
print(1 in e)

结果为:

True
True
True
True
True

序列相关函数

函数

功能

len()

计算序列的长度,即返回序列中包含多少个元素

max()

找出序列中的最大元素

min()

找出序列中的最小元素

list()

将序列转换为列表

str()

将序列转换为字符串

sum()

计算元素和。注意,对序列使用 sum() 函数时,做加和操作的必须都是数字,不能是字符或字符串,否则将抛出异常

sorted()

对元素进行排序

reversed()

反向序列中的元素。dict是无序的序列类型,因此没有该操作

enumerate()

将序列组合为一个索引序列,多用在 for 循环中

上述函数有几个需要注意:

a = 'abcdefghigk'
b = [1,2,3,4,5,6,7,8,9]
c = (1,2,3,4,5,6,7,8,9)
d = {1,2,3,4}
e = {1:'tom',2:'jack'}

print(max(a))
print(max(e))
print(list(a))
print(list(e))
print(str(b),'  ',len(str(b)))
print(str(e),'  ',len(str(e)))
print(sum(e))
print(sorted(e))

结果为:

k
2
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'g', 'k']
[1, 2]
[1, 2, 3, 4, 5, 6, 7, 8, 9]    27
{1: 'tom', 2: 'jack'}    21
3
[1, 2]

这几种操作可能跟想当然的结果不太一样,需要注意。