004 系列:元组,列表和字符串
Python中内置的系列数据包括:元组(tuple),列表(list),字符串(str)和字节数据(bytes 和bytearray)
[A] 系列的基本操作
测试系列长度
>>>len(obj) # 返回系列obj的长度 >>>max(s) # 返回s系列中最大元素 >>>min(s) # 返回s系列中最小元素 >>>sum(s) # 返回s系列中元素之和
系列的访问
>>>s[i] # 访问系列s在i处元素,此处i必须为数值并且为整数 注:此处序列序号为0,1,2,3……n-1 或者 -n…….-3,-2,-1
系列切片
通过切片操作,可以截取系列一部分,其具体操作为:
>>>s[i : j] 或 s[i : k :j] #返回s系列的i到j之间的元素(不包括j),步长为k
用函数slice切片,具体操作为:
>>>slice(start, stop, step) # 参数分别表示开始下标,结束下标(不包括)和步长
系列的连接和重复操作
序列连接和重复的基本形式有两种:
用加法进行连接:
>>>s1+s2 # 将系列s1和系列s2相连
用乘法进行重复:
>>>s*n 或 n*s # 将系列s重复n次
系列的成员操作
判断元素x是否在系列s之中,
>>>x in s # 返回逻辑值,若为True则元素x在系列s之中 >>>x not in s # 返回逻辑值,若为True则元素x不在系列s之中 >>>s.count(x,[m,n]) # 返回元素x在指定范围[m,n)中出现的次数 >>>s.index(x,[m,n]) # 返回元素x在指定范围[m,n)中首次出现的下标(原系列之中所在的下标)
系列的比较运算
两个系列支持比较运算(<, <=, ==, !=, >=,>),系列将按顺序对元素进行比较。
内置all()和any()
利用内置函数all()和any(),可以判断系列的元素是否全部或部分为True。其具体操作为:
>>>all(s) # 返回逻辑值,若系列s中所有值均为True,则返回True。 >>>any() # 返回逻辑值,若系列s中只要有值为True,则返回True。
系列拆封
【a】通过赋值语句可以将系列值进行拆封,将系列中的值赋给多个变量:
>>>变量1,变量2,。。。,= 系列或可迭代对象
注:左边变量个数必须等于右边系列中元素的个数
【b】变量个数和系列长度未知时,可以使用*元组变量进行拆封,但*元组变量只能出现一次:
>>>first, *middle, last = range(10) # 返回的变量middle为列表,包含八个元素
【c】如果只需要部分数据,则可以用_占位:
>>> _, *middle, _ = range(10) # 返回的变量middle为列表,包含八个元素。
[B] 元组tuple
元组为不可变对象,不可进行修改,添加,删除其中元素。仅可对其进行访问,其创建格式有四种:
>>>a = 1, 2,’ds’, 4 >>> a = (1, 2,’ds’, 4) >>>a = tuple()或a = () # 创建空元组 >>>a = tuple(iterable) # 用迭代器生成元组
元组的基本操作包括系列的所有基本操作,即5.1节中的所有内容。
[C] 列表list
列表(list)是一组包含有序元素的数据结构。列表是可变的系列结构,可以对列表进行访问,修改,删除和添加元素。Python中没有数组,list结构就替代了数组。
列表定义
列表的定义有三种方法:
>>>s = [1,5,4,4,’ds’,…] # 直接赋值,其元素可以为任何类型的格式。 >>>s = list 或 [] # 赋值空列表 >>>s = list(iterable) # 利用迭代器生成列表
列表基本操作
改变列表中元素的值:
>>>s[5] = 14 # 将列表s下标为5(即第6个元素)的元素改为14。 >>>s[2:6] = [10,20,30,40,50] # 系列赋值
删除列表元素:
>>>del s[12] # 将列表s中下标为12的元素删除 >>>del s[2:6] # 将列表s中下标从2到6的元素都删除 >>>del s # 删除列表变量s
列表对象的方法
>>>s.append(x) # 将对象x添加到列表s 的尾部,此时x可以为任何对象,但是会被当做一个元素附在s尾部 >>>s.clear() 或 del s[:] 或 s = [] # 删除列表s中的所有元素 >>>s.extend(t) # 将系列t添加到s尾部,此时系列t会被先换成list格式(可能包含很多列表格式的元素),再添加到系列s尾部 >>>s.insert(i,x) # 在列表s的下标为i的位置插入对象x, 此时x可以为任何对象,但是会被当做一个元素插入到s中 >>>a = s.pop(i) # 移除列表s中下标为i的元素,并将这个被移除的元素返回给a。若i省略,则移除列表最后一个元素 >>>s.remove(x) # 移除列表s中第一次出现的元素x,若找不到元素x,则报错 >>>s.reverse() # 列表反转,即[1,2,3]——>[3,2,1] >>>s.sort() # 列表排序,从小到大
列表解析表达式
列表解析表达式可以高效的处理一个迭代对象,并生成一个结果列表。其表达式有两种:
[expression for i in系列1 for j in 系列2 ……]
# 迭代所有内容并返回一个列表
[expression for i in系列1 for j in系列2 ……if condition_expression]
# 按条件迭代所有内容并返回一个列表
列表作为队列和栈
None