目录
用于记述python中对于序列的应用,包括列表、元组、字典、集合、字符串等。

序列是一块用于存放多个值的连续内存,并且按一定顺序排列,可通过索引取值。
序列主要操作如下:
索引就是序列中元素的编号,索引是从0开始的,因为计算机是二进制的只识别0和1。
假如把一个酒店作为一个序号,那各个房间的房间号就是索引值,可以通过房间号获取到各个房间。

示例:
- # _*_ coding:utf-8 _*_
-
- l = ["元素1","元素2","元素3","元素4","元素5"]
-
- print("索引是正的")
- print("元素0的值为:",l[0])
- print("元素1的值为:",l[1])
- print("元素2的值为:",l[2])
- print("元素3的值为:",l[3])
- print("元素4的值为:",l[4])
-
- print("")
- print("索引是负的")
- print("元素-1的值为:",l[-1])
- print("元素-2的值为:",l[-2])
- print("元素-3的值为:",l[-3])
- print("元素-4的值为:",l[-4])
- print("元素-5的值为:",l[-5])
结果:

遍历序列:
- #方法1,直接遍历
- for item in 序列:
- # 输出item
-
-
- #使用enumerate(),同时获得index
- for index,item in enumerate(序列名)
- # 输出index 和 item
示例:
- # _*_ coding:utf-8 _*_
-
- list_Name = ["小明","小张","小李","小亮","小钱"]
-
- print("列表如下:")
- for index,item in enumerate(list_Name):
- print("序号:{0},名字:{1}".format(index+1,item))
结果:

切片就是从序列中截取一部分元素作为新的序列。
格式如下:
sname[start : end : step]
示例如下:
- # _*_ coding:utf-8 _*_
-
- l = ["元素1","元素2","元素3","元素4","元素5"]
-
- print("原始列表 : ",l)
-
- print("[1:3]值为:",l[1:3]) #从索引1到索引3(不包括)的值列表
- print("[1:5:2]值为:",l[1:5:2]) #从索引1到索引5(不包括),间隔为2个元素的值
- print("[1:]值为:",l[1:]) #从索引1到结束
- print("[:3]值为:",l[:3]) #从第一个元素到索引为3(不包括)的值
- print("[::2]值为:",l[::2]) #从第一个元素到最后一个元素,间隔为2的值
- print("[:]值为:",l[:]) #从开始到结束的所有元素
- print("[::]值为:",l[::]) #从开始到结束的所有元素
结果:

使用“+”将两个序列相加,相加时不会去除重复的数据。
示例:
- # _*_ coding:utf-8 _*_
-
- l = ["元素1","元素2","元素3","元素4","元素5"]
- m = ["元素5","元素6","元素7"]
-
- print("原始列表l : ",l)
- print("原始列表m : ",m)
-
- print("l+m值为:",l+m)
结果:

注意:
只能同类型的序列才能相加,即元组和元组,列表和列表,字符串和字符串等,并不是不同数据类型的同类型序列不能相加。
示例1,将列表和元组相加:
- # _*_ coding:utf-8 _*_
-
- l = ["元素1","元素2","元素3","元素4","元素5"]
- m = ("元素5","元素6","元素7")
-
- print("原始列表l : ",l)
- print("原始列表m : ",m)
-
- print("l+m值为:",l+m)
相加时会报错:

示例2,将字符串列表和数字列表相加:
- # _*_ coding:utf-8 _*_
-
- l = ["元素1","元素2","元素3","元素4","元素5"]
- m = [5,6,7]
-
- print("原始列表l : ",l)
- print("原始列表m : ",m)
-
- print("l+m值为:",l+m)
结果如下:

序列的乘法就是使用“*”,一个序列乘以一个数字获得一个新的序列,新的序列是原来的序列重复n次。
格式如下:
序列 * n
示例:
- # _*_ coding:utf-8 _*_
-
- l = ["元素1","元素2","元素3"]
-
- print("序列乘以3 : ", l*3)
结果:

注意:
是将元素重复n次,而不是将元素内的值乘以n。
乘法可以用来生命指定长度的新列表,或者输出指定长度的空格或者*号等。
示例:
- # _*_ coding:utf-8 _*_
-
-
- print("长度为5的空列表: ", [None]*5)
- print("5个*号: ", "*"*5)
结果:
![]()
格式:
值 in 序列
示例:
- # _*_ coding:utf-8 _*_
-
- list_Name = ["小明","小张","小李","小亮","小钱"]
-
- if "小明" in list_Name:
- print("小明在名字列表中。")
-
- print("小明" in list_Name)
- print("小哥" in list_Name)
结果:

通过len(),max(),min()函数获取序列的长度、最大值、最小值。
格式:
序列长度: len(序列)
最大值: max(序列)
最小值: min(序列)
示例:
- # _*_ coding:utf-8 _*_
-
- list_Name = ["小明","小张","小李","小亮","小钱"]
-
- print("序列长度为 :",len(list_Name))
- print("序列的最大值为:",max(list_Name))
- print("序列的最小值为:",min(list_Name))
结果:

列表可以直接创建,使用“[]”包括的元素就是列表
创建格式:
变量名 = [元素1,元素2,...,元素n]
变量名 = [ 表达式 for var in range ]
删除格式:
del 列表
列表在python中会自动回收,可以不用删除,不过用完后删除列表是比较规范的写法。
列表删除后再次调用会报错。
示例:
- # _*_ coding:utf-8 _*_
-
- list_Name = ["小明","小张","小李","小亮","小钱"]
-
- print("列表 :",list_Name)
- print("[i*2 for i in range(0,10)] :",[i*2 for i in range(0,10)])
- print("[i*2 for i in [0,1,2,4,6] :",[i*2 for i in [0,1,2,4,6]])
结果:

同序列的操作。
通过索引获取匀速,然后进行修改或删除;
使用del删除部分元素,删除整个列表后,列表不可再次被引用。
修改格式:
list[index] = obj
删除格式:
del list[index]
删除示例:
- # _*_ coding:utf-8 _*_
-
- listA = [1,2,3,4,5]
- print("Creat list : ",listA)
- listA[0] = 5
- print("Modify listA[0] to 5 : ",listA)
- del listA[0]
- print("Delete listA[0]",listA)
- del listA[2:]
- print("Delete listA from index 2 to end : ",listA)
- del listA[0:]
- print("Delete all data : ",listA)
-
结果:

示例:
- # _*_ coding:utf-8 _*_
-
- listA = [1,2,3,4,5]
- print("ListA : ",listA)
- listA.append(6)
- print("Append 6 : ",listA)
-
- listA.insert(0,"0")
- print("Insert(0,\"0\") : ",listA)
-
- listA.extend([7,8,9])
- print("Extend([7,8,9]) : ",listA)
结果:

列表中的元素还是列表,就是多为列表。
示例:
- # _*_ coding:utf-8 _*_
-
- listA = [["1_1","1_2","1_3"],["2_1","2_2","3_3"],["3_1","3_2","3_3"]]
- print("多维列表:",listA)
-
- print("元素1 listA[1] :",listA[1])
- print("元素1的元素2 listA[1][2] :",listA[1][2])
结果:

通过迭代器函数获取列表的迭代器对象,然后通过迭代器对象的__next__()函数可以边离列表中的元素。
示例:
- # _*_ coding:utf-8 _*_
-
- listA = [1,2,3,4,5]
- iter_obj = iter(listA)
- print(next(iter_obj))
- print(next(iter_obj))
- print(next(iter_obj))
- print(next(iter_obj))
- print(next(iter_obj))
- print(next(iter_obj))
结果:

注意:
当元素遍历一遍之后再次获取,会报错。
其他常用操作如下:
示例:
- # _*_ coding:utf-8 _*_
-
- tupleA = (1,2,3,4,5)
- print("元组:",tupleA)
- print("元组转换为列表:",list(tupleA))
- string = '这是个字符串'
- print("字符串:",string)
- print("字符串转换为列表:",list(string))
- listA = [1,2,3,4,5]
- print("列表:",listA)
- print("listA.count(1) :",listA.count(1))
-
- print("listA.index(1) :",listA.index(1))
- listA = [1,2,3,4,5]
- print("列表:",listA)
- listA.pop()
- print("listA.pop() :",listA)
- pop = listA.pop(-2)
- print("listA.pop(-2) data:",pop)
- print("listA.pop(-2) :",listA)
- listA = [1,2,3,4,5]
- print("列表:",listA)
- listA.remove(2)
- print("listA.remove(2) :",listA)
- listA.reverse()
- print("listA.reverse() :",listA)
- listA.sort()
- print("listA.sort() :",listA)
- copy1 = listA.copy()
- print("listA.copy() :",copy1)
- listA.clear()
- print("listA.clear() :",listA)
-
- print("listA.count() :",listA.count())
结果:

注意:
count()需要有元素,没有参数时会报错。
格式:
变量名 = (元素1,元素2,...,元素n)
元组推导式:
变量名 = ( 表达式 for var in range )
注意:
当元组只有一个元素时,需要在元素后面添加逗号,否则小括号会被当做运算符。
同序列的索引。
元组的元素不允许修改;
不过可以对元组进行相加生成新的元组;
元组中的元素不能进行删除,但是可以使用del语句删除整个元组。
元组删除后不允许再次访问。
用法同列表。
格式:
变量名={key1:value1, key2:value2,…, keyn:valuen}
字典推导式:
变量名 = { key表达式:值表达式 for var in range }
字典的的元素是无序的,只能通过key值获取对应元素。
不能通过索引获取。
通过key值获取字典之后可以对value进行操作修改。
字典可以使用del删除某个元素或者整个字典。
字典是可以嵌套的,与多为数组类似
示例:
- # _*_ coding:utf-8 _*_
-
- dict1 = {1:"元素1",2:"元素2",3:'元素3'}
- print("字典:",dict1)
-
- print("字典str(dict1):",str(dict1))
- dict1.clear()
- print("\n")
- print("清空字典:",dict1)
- dict1 = {1:"元素1",2:"元素2",3:'元素3'}
- print("字典:",dict1)
- print("dict1.copy():",dict1.copy())
- print("dict1.fromkeys([1,2,3]):",dict1.fromkeys([1,2,3]))
- print("dict.fromkeys([1,2,3]):",dict.fromkeys([1,2,3]))
- print("dict1.get(1):",dict1.get(1))
- print("dict1.get(5):",dict1.get(5))
- print("dict1.get(5,None):",dict1.get(5,None))
- print("dict1.get(5,True):",dict1.get(5,True))
- print("1 in dict1:", 1 in dict1)
- print("5 in dict1:", 5 in dict1)
- print("dict1.items():",dict1.items())
- print("dict1.keys():",dict1.keys())
-
- print("dict1.setdefault(1)",dict1.setdefault(1))
- print("dict1.get(1):",dict1.get(1))
-
- print("dict1.setdefault(5)",dict1.setdefault(5))
- print("dict1.get(5):",dict1.get(5))
- print("dict1.setdefault(6,True):",dict1.setdefault(6,True))
- print("dict1.get(6):",dict1.get(6))
-
- print("dict1.update({1:'元素a',2:'元素b',3:'元素3',4:'元素4'}):",dict1.update({1:"元素a",2:"元素b",3:'元素3',4:'元素4'}))
- print("updated字典:",dict1)
- print("dict1.values():",dict1.values())
结果:

格式:
变量名 = {元素1,元素2,...,元素n}
特点:
| 运算类型 | 方法 |
| 并集 | “|”或union()函数 |
| 交集 | “&”或intersection()函数 |
| 差集 | “-”或difference()函数 |
| 对称差 | “^”或symmetric_difference()函数 |
add():添加一个元素
update():同时添加多个元素
remove():删除集合中特定的元素,元素不存在时会报错
discard():删除集合中的特定元素,元素不存在时不会报错。
set():转换为集合
使用frozenset()方法创建的集合时不可变的,不能进行更改和删除。
示例:
- # _*_ coding:utf-8 _*_
-
- set1 = {"元素1","元素2",'元素3'}
- set2 = {"元素3","元素4",'元素5'}
- print("set:",set1)
- print(type(set1))
-
- print("set1|set2:",set1|set2)
- print("set1&set2:",set1&set2)
- print("set1-set2:",set1-set2)
- print("set1^set2:",set1^set2)
- print("set1.add('元素6'):",set1.add('元素6'))
- print("set1.add('元素7','元素8'):",set1.update('元素7','元素8'))
- print("set1.discard('元素1'):",set1.discard('元素1'))
- print("set:",set1)
- print("set1.discard('元素9'):",set1.discard('元素9'))
- print("set:",set1)
- print("set1.remove('元素2'):",set1.remove('元素2'))
- print("set:",set1)
- print("set1.remove('元素9'):",set1.remove('元素9'))
- print("set:",set1)
结果:

| 对比点 | 列表 | 元组 | 字典 | 集合 |
|---|---|---|---|---|
| 名称 | list | tuple | dictionary | set |
| 格式 | [] | () | {key:value} | {} |
| 是否可变 | √ | x | √ | √ |
| 是否重复 | √ | √ | √ | x |
| 是否有序 | √ | √ | x | x |