序列是Python中最基本的数据结构。Python中有六个序列的内置类型,分别是列表、元组、字符串、Unicode字符、buffer对象、xrange对象,最常用的是列表和元组。
列表和列表推导式
列表就是用逗号(,)分割的一系列数据用方括号([])括起来,逗号分割的数据称为元素,每个元素都有索引,用来记录元素所在位置,索引从0开始。同时列表的元素也可以是列表。
列表创建与删除
-
创建
列表定义格式:
列表名=[元素1,元素2,...]
空列表定义:
列表名=[] #或者 列表名=list()
例如:
list1=[1,2,3,4,5] list2=['a','b','c','d',525]
-
删除
-
根据索引删除某个元素:
del 列表名[索引] #例如: list2=['a','b','c','d',525] del list2[2] #删除列表中第三个元素 print list2 # 结果为list2=['a','b','d',525]
-
删除列表中某些连续元素格式:
del 列表名[[头下标]:[尾下标]] #例如: list2=['a','b','c','d',525] del list2[2:4] #删除列表中第3个到第4个元素 print list2 # 结果为list2=['a','b',525]
删除的是从头下标开始,到尾下标结束之前的内容。省略头下标默认是从0开始,省略尾下标则是默认到结尾处的所有元素。
-
删除列表中所有元素:
del 列表名[[头下标]:[尾下标]] #例如: list2=['a','b','c','d',525] del list2[:] #删除列表中所有元素 print list2 # 结果为list2=[]
-
-
列表的
+
、*
、in
运算列表的
+
、*
运算与字符串相同,+用于组和列表,*
同于重复列表.in
用于判断某个元素是否在列表中。例如:
['a','b','c']+[1,2,3] # 结果为['a','b','c',1,2,3] [1,2,3]*3 # 结果为[1,2,3,1,2,3,1,2,3] 1 in [1,2,3] # 结果为True
-
列表遍历
for 变量 in 列表: 表达式
例如:
list1=[1,2,3,4,5] for i in list1: print(i,end='') # 结果为1 2 3 4 5
列表常用方法
-
相关内置函数
函数 描述 len(list) 返回列表长度(即列表元素个数) max(list) 返回列表中最大的元素 min(list) 返回列表中最小的元素 list(sep) 将元组、字典、集合、字符串转换为列表 -
列表方法
方法 描述 list.append(obj) 向列表末尾添加对象 list.count(obj) 统计某个元素在列表中出现的次数 list.extend(sep) 在列表末尾添加另一个序列的值(用新列表扩展原来的列表) list.index(obj) 返回列表中查找某个值第一个匹配项的索引值 obj=list.pop() 移除列表中的一个值(默认为最后一个),并返回移除的值 list.remove(obj) 移除列表中第一个匹配项 list.reverse() 将列表翻转 list.sort() 对列表进行排序 list.clear() 请空列表 list.copy() 复制列表
列表推导式
列表推导式是使用非常简洁的方式来快速生成满足特定需求的列表,代码具有非常强的可读性,运行速度也快.
格式:
[表达式 for 变量 in 列表]
#或者
[表达式 for 变量 in 列表 if 条件]
#相当于
result = []
for 变量 in 列表:
if 条件:
result.append(表达式)
元组与生成器推导式
Python元组与列表类似,不同之处在于元组不能修改。元组的访问速度和处理速度更快,元组是在小括号()中添加元素。
元组创建
-
定义格式:
元组名 = (元素1,元素2,...) # 例如 t1 = (1,2,3,4,5)
空元组定义:
元组名=()
或者元组名=tuple()
如果元组只有一个元素时,需要在元素后添加逗号,否则括号会被当做运算符。
-
元组访问
跟列表一样使用索引访问。
-
元组的删除
元组中的元素不能修改,也不能删除。删除操作只能删除整个元组。使用
del
删除整个元祖. -
元组的
+
、*
、in
运算元组的
+
、*
运算与列表相同,+用于组和元组,*
同于重复元组.in
用于判断某个元素是否在元组中 -
元组遍历
元组遍历方式与列表一样
-
元组切片
元组切片除了不能改变元素的值与列表相同
-
元组内置函数
元组内置函数中
tuple()
是将其他列表转换成元组,其他与列表相同.
生成器推导式
生成器推导格式:
(结果 for 变量 in 可迭代对象 if 筛选对象)
注意:
- 生成器推导式可以直接获取成生成器对象,生成器可以直接进行for循环,生成器具有惰性机制
- 生成器对象既不是列表也不是元组,如果想要让其变成列表或者对象,需要使用list()或者tuple()函数进行转换
- 可以使用_ _next_ _()或者内置函数访问生成器对象,但是当所有元素访问完成,如果需要从新访问元素,必须重新创建生成器
字典
Python中字典是另一种可变容器模型,而且可以存储任意类型对象。
字典的创建、添加、修改与删除
-
创建字典
格式:
字典名 = {'key1':'value1','key2':'value',...}
字典中的每个元素都是‘键(key)值(value)对’,每个键值对使用
:
分割,每个元素之间用,
分割.其中键(key)必须是唯一的,如果重复,最后一个的值会替换前边相同键的值。
-
添加与修改字典元素
格式:
字典名[键] = 值
当前键已经存在会修改字典中该键原有的值,不存在时,会创建新的键值对.
-
删除字典的元素
格式:
-
删除某个键值对
del 字典名[键]
-
清空字典中所有元素
字典名.clear()
-
删除字典
del 字典名
-
-
内置函数及其方法
函数 描述 len(dict) 返回字典元素的个数,即键的个数 str(dict) 输出字典,以可打印的字符串输出 type(variable) 返回输入的变量类型 dict.clear() 清空字典 dict.copy() 复制字典 dict.fromekey(sep,val) 以sep中元素为键,val中的元素为值,创建一个新字典 dict.get(key) 返回指定键的值,如果键不存在返回None dict.items() 返回字典中的所有键值对 dict.keys() 返回字典中的所有键 dict.update(dict2) 将dict2合并到dict dict.values() 返回字典中的所有值
集合
Python中的集合(set)是一个无序且不重复的序列.
集合基础知识
Python的集合也具备数学中集合的特性:确定性、互异性、无序性。
集合创建格式:
集合名 = {value1,value2,...}
# 或者
集合名 = set({value1,value2,...})
注意:创建空集合必须用set(),而不是{},因为{}使用来创建空字典的。集合中的元素可以是不同的类型(数字、元组、字符串),但不可以是可变元素(列表,集合,字典)。
集合操作与运算
函数 | 描述 |
---|---|
len(s) | 返回集合元素个数 |
str(s) | 输出集合以字符串表示 |
set(value) | 生成可变的集合 |
frozenset(value) | 生成不可变集合 |
s.copy() | 复制集合 |
s.update(t) | 将t中的元素添加到s |
s.add(obj) | 将obj添加到集合s |
s.remove(obj) | 将obj从集合s中删除,如果obj不存在一发异常 |
s.discard(obj) | 将obj从集合s中删除,如果obj不存在不影响 |
s.pop() | 删除并返回一个不确定元素 |
s.clear() | 清空集合 |
序列间的区别
特征\类别 | 列表 | 元组 | 字典 | 集合 |
---|---|---|---|---|
英文 | list | tuple | dict | set |
可读 | 读写 | 只可读 | 读写 | 读写 |
是否重复 | 是 | 是 | 是(键不可重复) | 否 |
存储 | 值 | 值 | 键值对 | 键(不可重复) |
是否有序 | 有序 | 有序 | 无序 | 无序 |
添加 | append() | 不能添加 | d[key]=value | add() |