目录:
一;概念
二:访问单个元素
三;切片
四;序列的赋值
五;序列的加法和乘法
六;查找序列中是否存在某个或某些元素
七;与序列有关的三个函数
……
一;概念:
为满足程序中复杂的数据表示,python支持组合数据类型,可以将一批数据作为一个整体进行数据操作,这就是数据容器的概念。
容器中可包含多个数据(元素),容器中的数据(元素)有先后次序,每个元素通过先用其下标(索引)来访问。序列的下标从0开始,后面下标依次为1,2,3…。
序列是其中一大类数据容器的统称,不是具体的数据类型。
常见的序列类型:列表(list),字符串(string),元祖(tuple)。
上图是列表、字符串、元祖都通用的操作。
……
……
二;访问单个元素
a=’hello’ #初始化一个字符串
print(a[0])
这个程序将会输出:
h
其实,除了这一种下标的表达方式以外,还有一种下标表示方法,如果序列中有n个元素,那么倒数第一个元素是a[-1],倒数第二个元素是a[-2],最后一个元素是a[-n].这种表示方法咋一看有点反人类,完全没必要嘛,但其实这种表达方法很适合用来对序列进行切片操作,同时,也可以很轻松的找到未知长度序列的最后面的元素。
……
……
三;切片
切片实际上就是访问序列中的多个元素。(不再是单个元素)
比如这样的程序:
a=[1,2,3,4,5,6]
print(a[1:4])
会输出:
[2, 3, 4]
其实就是从下标1开始切一刀,然后在下标4的位置也切一刀,然后把中间的元素输出。(不包括下标4)
其实上面的程序还能写成另外一种形式:
a=[1,2,3,4,5,6]
print(a[1:-2])
从下标1开始切一刀,然后在下标-2的位置也切一刀,输出和上面是一样的。
切片还可以设置步长,比如a[1:5:2],其实就是输出下标1、下标3的值。
……
……
四;序列的赋值
和c语言中的数组不同。
序列可以进行这样的一个操作:
a=[1,2,3,4,5,6]
b=a #将列表a赋值给了b
b[1]=555
print(a)
print(b)
然而,查看一下输出结果:
[1, 555, 3, 4, 5, 6]
[1, 555, 3, 4, 5, 6]
b[1]改变,a[1]也同时发生了改变,其实a和b根本就是同一个东西,这根本就不是赋值,相当于是给a取了一个别名叫作b,虽然名字有差距,但都是同一个东西。
所以,想要进行赋值的话,可以用切片进行处理。
a=[1,2,3,4,5,6]
b=a[:] #把a全部切给b
b[1]=555
print(a)
print(b)
然后看一下输出结果:
[1, 2, 3, 4, 5, 6]
[1, 555, 3, 4, 5, 6]
ok,赋值成功了,a和b现在已经是完全不同的两个东西了。
……
……
五;序列的加法和乘法
实际上和上一篇学习笔记中讲的一样。
x=[1,2,3]
y=[4,5,6]
z=x+y
那么z=[1,2,3,4,5,6]
如果z=3*x
那么z=[1,2,3,1,2,3,1,2,3]
上面演示的是列表的加法和乘法,而序列和元祖也是一样的。
……
……
六;查找序列中是否存在某个或某些元素
用in来进行操作。
比如这样一段程序:
a=[1,2,3,4,5,6]
print(3 in a)
输出结果得:
True #输出一个bool值
输出为真,说明序列a中有3这个元素。
不过列表和字符串有些不同。
a=[1,2,3,4,5,6]
print([2,3] in a)
会输出:
False
但如果程序是这样:
a=[1,[2,3],4,5,6]
print([2,3] in a)
就会输出:
True
这说明,列表中只能确定单个元素是否存在。
但字符串不一样,比如这样一段程序:
a='hello'
print('he' in a)
会输出:
True
说明字符串中可以确定多个元素是否存在,和列表还是有区别的。
至于元祖……元祖和列表一样。
……
……
七;与序列有关的三个函数
len()函数,可以输出序列的长度。
max()函数,可以输出序列的最大值
min()函数,可以输出序列的最小值
比如这样一段代码:
a='ajio1oiw1'
print(min(a))
print(max(a))
print(len(a))
会输出:
1 #最小值是1
w #最大值是w
9 #序列长度是9