7. 列表
列表是 Python 中的一种数据结构,它可以存储不同类型的数据,用中括号“[ ]”括起来作为标识。
7.1 列表的循环遍历
列表索引是从0开始的,我们可以通过下标索引的方式来访问列表中的值。
如需循环,一般使用for循环遍历列表,例如:
namesList = ['张三', '李四', '王五']
for name in namesList:
print(name, end=" ") # 输出结果为:张三 李四 王五
7.2 列表的常见操作
7.2.1 在列表中增加元素
在列表中增加元素的方式主要有以下三种方法,具体如下:
-
通过 append()方法 可以向列表的末尾添加单个元素 object,一般格式为:list_name.append( object )
-
通过 insert()方法 在指定位置 index 前插入单个元素 object,一般格式为:list_name.insert( index, object )
-
通过 extend()方法 可以将另一个列表的所有元素添加到列表的末尾,一般格式为:list_name.extend( list[ ] )
namesList.append("赵六") # >>> namesList: ['张三', '李四', '王五', '赵六']
namesList.insert(2, "孙七") # >>> namesList: ['张三', '李四', '孙七', '王五', '赵六']
namesList.extend(["周八", "吴九"]) # >>> namesList: ['张三', '李四', '孙七', '王五', '赵六', '周八', '吴九']
7.2.2 在列表中查找元素
在列表中查找元素可以使用成员运算符或 list 数据结构自带的方法。
-
in(存在,成员运算符),如果在指定的列表中找到值返回 True,否则返回 False
-
not in(不存在,成员运算符),如果在指定的列表中没有找到值返回 True,否则返回 False
-
通过 count() 方法 可以统计指定元素 object 在列表中出现的次数,一般格式为:list_name.count( object )
-
通过 index() 方法 可以查看指定值在列表中的位置,返回其索引值,一般格式为:list_name.index( object )
温馨提示:如果指定值不存在,使用 index() 方法 将会引发 ValueError 错误并退出进程,使用前最好提前判断一下元素是否存在
namesList.count("张三") # >>> 输出结果为:1
namesList.index("张三") # >>> 输出结果为:0
namesList.index("小红") # >>> ValueError: '小红' is not in list
7.2.3 列表元素的修改
列表元素的修改,也是通过下标来实现的,例如:
namesList[0] = "小红"
7.2.4 在列表中删除元素
在列表中删除元素的方式主要有以下四种,具体如下:
-
使用 del 关键字,根据目标元素所在位置的索引,将元素从列表中删除,一般格式为:del list_name[ index ] 或 del list_name[ start : end ]
-
使用 pop() 方法,根据目标元素所在位置的索引,将元素从列表中删除,一般格式为:list_name.pop( index )
温馨提示:pop() 方法如果不提供 index,默认会删除最后一个元素,类似于数据结构的出栈操作
-
使用 remove() 方法,根据元素本身的值进行删除,一般格式为:list_name.remove( value )
温馨提示:如果列表中有多个和指定值相同的元素,remove() 方法只会删除第一个和指定值相同的元素,如果指定值不存在,将会引发 ValueError 错误并退出进程
-
使用 clear() 方法,将列表中所有元素全部删除,即清空并返回一个空列表,一般格式为:list_name.clear( )
del namesList[0] # 删除列表中的第一个元素
del namesList[0:2] # 删除列表中的前两个元素
namesList.pop(0) # 删除列表中的第一个元素
namesList.pop() # 删除列表中的最后一个元素
namesList.remove("张三") # 删除列表中的值为“张三”的元素
namesList.clear() # 清空列表
7.2.5 列表的排序操作
列表的排序一般使用以下两种方法,具体如下:
-
使用 sort() 方法,将列表中的元素按照特定顺序排列,一般格式为:list_name.sort( cmp=None, key=None, reverse=False )
温馨提示:
sort() 方法默认按照自然升序排列列表中的元素(reverse=False),reverse = True 降序, reverse = False 升序
涉及中文排序时,需要明确,sort() 方法是根据字符的编码(Unicode)大小进行排序,与日常中的拼音排序会有稍许区别
其余不常用的参数:cmp指定排序的方法,key指定用来比较的元素
-
使用 sort() 方法,可以将列表逆置,一般格式为:list_name.reverse()
numsList = [1, 2, 4, 3, 5, 6, 9, 8, 7]
numsList.sort() # >>> 排序结果为 [1, 2, 3, 4, 5, 6, 7, 8, 9]
numsList.sort(reverse=True) # >>> 排序结果为 [9, 8, 7, 6, 5, 4, 3, 2, 1]
numsList.reverse() # >>> 排序结果为 [7, 8, 9, 6, 5, 3, 4, 2, 1]
8. 元组
Python的元组与列表类似,元组同样支持遍历以及使用下标索引来访问元组中的值,不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号。
8.1 元组常用的内置函数
-
len() 函数,返回元组中的元素个数,一般格式为:len( tuple_name )
-
max() 函数,返回元组中元素最大值 ,一般格式为:max( tuple_name )
-
min() 函数,返回元组中元素最小值 ,一般格式为:min( tuple_name )
-
tuple() 函数, 可以将列表转换成元组,一般格式为:tuple( list_name )
numsTuple = (1, 2, 4, 3, 5, 6, 9, 8, 7)
print(len(numsTuple)) # >>> 输出结果为:9
print(max(numsTuple)) # >>> 输出结果为:9
print(min(numsTuple)) # >>> 输出结果为:1
numsList = [1, 2, 3]
numsTuple2 = tuple(numsList)
print(numsTuple2) # >>> 输出结果为:(1, 2, 3)
9. 字典
字典当中的元素是通过键值对来存取的。字典由索引(key)和它对应的值(value)组成,用大括号"{ }"括起来作为标识。
一般根据键访问值,但如果使用的是不存在的键,将会引发 KeyError 错误并退出进程,例如:
studentInfo = {'name': "小明", 'id': 10086, 'sex': "男"}
print(studentInfo["name"]) # >>> 输出结果为:小明
print(studentInfo["age"]) # >>> KeyError: 'age'
为了防止抛出键不存在导致的 KeyError 错误,可以使用 get() 方法,一般格式为:dictionary_name.get( key, default )
print(studentInfo.get("name")) # >>> 输出结果为:小明 当 name 作为键存在时,返回对应的值 "小明 "
print(studentInfo.get("age")) # >>> 输出结果为:None 当 name 不存在时,返回 None
print(studentInfo.get("age", 18)) # >>> 输出结果为:18 设置一个默认值 18,当检索的键不存在时,返回 18
9.1 字典的常见操作
9.1.1 添加 & 修改字典的元素
向字典中增加新的键值对,如果键值对不存在,则会新建,反之为修改,一般格式为:dictionary_name[ key ] = value
studentInfo["age"] = 18 # >>> 添加元素后的结果为:{'name': '小明', 'id': 10086, 'sex': '男', 'age': 18}
studentInfo["age"] = 24 # age 键值对已存在,该操作结果为将 age 的值由 18 修改为 24
9.1.2 删除字典的元素
删除字典元素的方式主要分为以下三种,具体如下:
-
使用 del 关键字,根据提供的键,删除字典中的单个元素,一般格式为:del dictionary_name[ key ]
-
使用 del 关键字,删除整个字典,删除完后该字典变量将不复存在,一般格式为:del dictionary_name
-
使用 clear() 方法,删除字典中的所有键值对,即清空并返回一个空的字典,一般格式为:dictionary_name.clear()
del studentInfo["sex"] # >>> 从字典中删除键为 "sex"的键值对,结果为:{'name': '小明', 'id': 10086}
studentInfo.clear() # >>> 清空字典,结果为:{ }
del studentInfo # >>> 删除字典,删除后再访问 studentInfo 将会抛出 name 'studentInfo' is not defined 错误
print(studentInfo)
9.1.3 计算字典中键值对的个数
使用内置函数 len() ,返回字典中存储的键值对个数,一般格式为:len( dictionary_name )
studentInfo = {'name': "小明", 'id': 10086, 'sex': "男"}
print(len(studentInfo)) # >>> 输出结果为:3
9.1.4 获取字典中键 & 值 & 键值对的列表
-
使用 keys() 方法,返回字典的所有可用键,一般格式为:dictionary_name.keys()
-
使用 values() 方法,返回字典的所有可用值,一般格式为:dictionary_name.values()
-
使用 items() 方法,返回字典的所有(键,值)元组对的列表,一般格式为:dictionary_name.items()
studentInfo = {'name': "小明", 'id': 10086, 'sex': "男"}
studentInfo.keys() # 返回字典的所有可用键 -> dict_keys(['name', 'id', 'sex'])
studentInfo.values() # 返回字典的所有可用值 -> dict_values(['小明', 10086, '男'])
studentInfo.items() # 返回字典的(键,值)元组对的列表 -> dict_items([('name', '小明'), ('id', 10086), ('sex', '男')])
for key, value in studentInfo.items():
print("key=%s,value=%s" % (key, value)) # 遍历字典的键值对
""" 遍历结果
key=name,value=小明
key=id,value=10086
key=sex,value=男
"""