- 五.列表
- 六.字典
-
列表:可储存n多个元素,程序可方便地对这些数据进行整体操作
- 列表的创建:使用中括号[]或内置函数list(),数据间用,隔开 如:
lista=[123,"加藤惠",520]
-
列表的特点
- 列表元素按顺序有序排序
- 索引映射唯一一个数据((正向从第一个元素索引为0开始,列表中按序依次增加;反向从最后一个元素索引为-1开始,按序依次减小))
- 列表可以存储重复数据
- 任意数据类型混存
- 根据需要动态分配和回收内存
-
获取指定元素的索引
如果列表中存在多个相同元素,只返回相同元素中第一个元素的索引;如果查询的元素在列表中不存在,抛出ValueError;还可在指定的start和stop中查找,
语法格式为 (列表名.index(‘元素’,start,stop))
如lista=[123,"加藤惠",520,123,123] print(lista.index("123",1,3)) #注意不包括stop输出3
-
获取列表中的元素
- 获取指定元素
列表名[索引] - 获取多个元素(切片)
列表名[start:stop:step]
切片结果是原列表片段的拷贝,是新列表;范围是[start,stop),左闭右开;
若step为负数,从start开始向左切片
- 获取指定元素
-
列表元素的判断
使用in和not in
if 元素 in 列表名:———— -
列表元素的遍历
for 自定义变量 in 列表名:
print(自定义变量)
如lista=[123,"加藤惠",520] for i in lista: print(i)输出
123 加藤惠 520
-
列表元素的增加操作
- append()
在列表的末尾添加一个元素
列表名.apppend(元素)
若使用append添加另一个列表,会将列表作为一个元素添加至原列表 - extend()
在列表的末尾至少添加一个元素(列表)
列表名.extend(另一个列表名) - insert()
在列表的任意位置添加一个元素
列表名.insert(索引,元素) - 切片
在列表的任意位置添加至少一个元素
切片:把切掉的部分用新列表替换
原列表名[start:stop]=新列表名 - 还可以直接使用+
如 lista=lista+[元素]
- append()
-
列表元素的删除操作
- remove()
一次移除一个元素;重复元素只移除第一个;元素不存在抛出ValueError
列表名.remove(元素) - pop()
删除指定索引位置上的元素;指定索引不存在则抛出ValueError;不指定索引则删除列表中最后一个元素
列表名.pop(索引) - 切片
一次至少删除一个元素;产生新列表
新列表名=原列表[start:stop:step] - clear()
清空列表
列表名.clear() - del()
删除列表
列表名.del()
- remove()
-
列表元素的修改操作
为指定索引的元素赋予一个新值;为指定的切片赋予一个新值
列表名[索引]=新元素
列表名[start:stop]=另一个列表 -
列表元素的排序操作
调用sort()方法 列表中所有元素默认按照从小到大的顺序进行排列,可以指定reserve=True,进行降序排序
升序排序:列表名.sort()
降序排序:列表名.sort(reserve=True)
调用内置函数sorted() 可以指定reserve=True,进行降序排序,原列表不发生改变
升序:新列表名=sorted(原列表名)
降序:新列表名=sorted(原列表名.reserve=True)
sorted函数可以对所有可迭代类型使用,如对字典使用返回值是key排序后的列表!!!如果要返回排序后的字典
sorted_dict = dict(sorted(orig_dict.items(), key=lambda kv: (kv[0])))
-
列表生成式
列表名=[生成列表元素的表达式 for 自定义变量 in range(start,stop,step)]
如lst=[i+2 for i in range(5)]
输出[2, 3, 4, 5, 6]
-
字典
- 字典是一个可变序列,以键值对的方式存储数据
- 字典是无序数据;冒号前为键,冒号后为值
- 键必须是不可变序列(非列表)
- 字典依据key查找value所在位置
- 字典的键不能重复,值可以重复
-
字典的创建
- 使用{}
字典名={key:value,key:value,…} - dict()
字典名=dict(key:value,key:value,…)
*key是否加单引号取决于key的数据类型,键值对中是冒号
空字典就是{}
- 使用{}
-
字典元素的获取
- 使用[]
字典名.[key] - 使用get()方法
字典名.get(key,value) - 区别在于若查找的key不存在,[]会报错;get()方法不会报错,输出None或者自己指定的value
- 使用[]
-
key的判断
in/not in -
字典元素的删除
del 字典名[key]
清空字典元素:字典名.clear() -
字典元素的新增
字典名[key]=value 修改元素也用此方法 -
获取字典视图
- keys()获取字典中所有key
- values()获取字典中所有value
- items()获取字典中所有的键值对
如
dicta={"A":1,"B":2,"C":3} print(dicta.keys()) print(dicta.values()) print(dicta.items())输出
dict_keys(['A', 'B', 'C']) dict_values([1, 2, 3]) dict_items([('A', 1), ('B', 2), ('C', 3)]) -
字典元素的遍历
- 获取key for 变量 in 字典
- 获取value for 变量 in 字典.values
- 同时获取key和value for 变量1,变量2 in 字典.items (变量1存储key,变量2存储value)
-
字典生成式
现有两个列表,若要将它们组成字典,使用内置函数zip()
字典名={key:value for key,value in zip(列表1,列表2)}
若两个列表元素个数不同,则’木板效应’
如items=['笔','本子','文具盒'] prices=[2,5,10] d={item:price for item,price in zip(items,prices)} print(d)输出{'笔': 2, '本子': 5, '文具盒': 10}
还可 变量=zip(列表1,列表2)
如lst=zip(items,prices) print(list(lst))
输出[('笔', 2), ('本子', 5), ('文具盒', 10)]
-
可变序列和不可变序列
- 可变序列:(列表、字典、集合):可以对序列执行增、删、改操作,对象地址不发生改变;
ython
lst=zip(items,prices)
print(list(lst))
输出```[('笔', 2), ('本子', 5), ('文具盒', 10)]``` - 可变序列:(列表、字典、集合):可以对序列执行增、删、改操作,对象地址不发生改变;
-
可变序列和不可变序列
- 可变序列:(列表、字典、集合):可以对序列执行增、删、改操作,对象地址不发生改变;
- 不可变序列(字符串、元组):没有增、删、改操作



