目录
一、组合数据类型概述
二、列表
2.1 什么是列表
2.2 列表的基本操作
2.3 列表方法
2.4 操作列表的常用内置函数
2.5 列表推导式
三、元组(tuple)——不可变序列
3.1 什么是元组
3.2 元组的读取
3.3 元组的修改——可修改,但可以生产新的元组对象
3.4 元组的删除
3.5 元组的基本操作
3.6 用于元组的内置函数
3.7 元组的省略写法
3.8 元组存在的意义
四、集合
4.1 常用方法
4.2 集合操作
4.3 集合推导式
4.4 适用场合:
五、字典
5.1 什么是字典
5.2 字典创建 (有多种方法)
5.3 字典读取
5.4 copy():复制字典(浅拷贝)
5.5 update():用一个字典替换另一个字典
5.6 字典删除
5.7 字典推导式
六、应用
1、ds参数默认值判断
练习
(1)适用场合
很多时候,计算机需要对一组数据进行批量处理, 例如:给定一组单词{python, data, function, list, loop},计算并输出每个单词的长度
(2) 什么是组合数据类型
将多个同类型或不同类型的数据组织起来,通过单一的表示使数据操作更有序更容易。 根据数据之间的关系,组合数据类型可以分为三类:
(3) 序列类型
Python语言中常用的序列类型包括:str(字符串)、 tuple(元组)和list(列表)
序列类型支持成员关系操作符(in)、 长度计算函数(len())、 分片([]),元素本身也可以是序列类型(即嵌套)
(4)集合类型
(5)映射类型
映射类型是“键-值” 数据项的组合,每个元素是一个键值对,即元素是(key, value),元素之间是无序的。 键值对(key, value)是一种二元关系。 在Python中,映射类型主要以字典(dict)体现。
>>> list=['abc',30, [78, 60, 100]]
>>> list[2]
[78, 60, 100]
>>>
请注意: 变量名不能使用关键字命名,例如:list、tuple、map等
格式: 对象.方法(参数)
比较: extend与append的不同点
说明: 即参数为列表
Python程序开发时应用最多的技术之一,它以非常简洁的方式来快速生成满足特定需求的列表,代码具有非常强的可读性。例如:
相当于
aList = []
for x in range(10):
aList.append(x**2)
1)使用列表推导式实现嵌套列表的平铺
2)过滤不符合条件的元素
3)使用多个循环,实现多序列元素的任意组合,并且可以结合条件语句过滤特定元素
问题: ( )、(10)、(10,)的数据类型分别是什么?
与列表相同(左边从0开始,右边从-1开始)
不可删除元组中的元素,但可以删除整个元组对象
表达固定数据项(如字典的key值)、 函数多返回值、多变量同步赋值、 循环遍历、函数可变参数等情况
成员关系测试、 元素去重和删除数据项
>>> d1 = {'id':2021, 'name':'xu'}
>>> d1['id']
2021
>>> d1['grade']
Traceback (most recent call last):
File "", line 1, in
KeyError: 'grade'
>>> d1
{'id': 2021, 'name': 'xu'}
>>> d1.get('name')
'xu'
>>> print(d1.get('grade'))
None
>>> d1.get('grade', '对应键不存在')
'对应键不存在'
>>> d2 = {'id':2021, 'name':'xu', 'grade':2}
>>> d2.keys()
dict_keys(['id', 'name', 'grade'])
>>> for key in d2.keys():
... print(key,end=' ')
...
id name grade >>>
>>> d2.values()
dict_values([2021, 'xu', 2])
>>> for value in d2.values():
... print(value, end=' ')
...
2021 xu 2 >>>
>>> d2.items()
dict_items([('id', 2021), ('name', 'xu'), ('grade', 2)])
>>> for k,v in d2.items():
... print(k,':',v,end=' ')
...
id : 2021 name : xu grade : 2 >>>
>>> d1 = {'name':'zhang','books':['book1','book2','book3']}
>>> id(d1)
2279721142536
>>> d2=d1.copy()
>>> id(d2)
2279719966744
>>> d2['name'] = 'li'
>>> d2
{'name': 'li', 'books': ['book1', 'book2', 'book3']}
>>> d2['books'].remove('book2')
>>> d2
{'name': 'li', 'books': ['book1', 'book3']}
>>> d1
{'name': 'zhang', 'books': ['book1', 'book3']}
说明: 当在副本中修替换了值时,原字典不受影响;当在修改了某个值(原地修改,不是替换),则原字典会改变。
>>> old={'one':1, 'two':2, 'three':3}
>>> x={'one':11}
>>> old.update(x)
>>> old
{'one': 11, 'two': 2, 'three': 3}
>>> y={'four':4}
>>> old.update(y)
>>> old
{'one': 11, 'two': 2, 'three': 3, 'four': 4}
说明: 提供字典的项会被添加到原字典中去,若值相同,则被覆盖。
>>> d={'one':1, 'two':2, 'three':3, 'four':4}
>>> del d['one']
>>> d
{'two': 2, 'three': 3, 'four': 4}
>>> d.pop('three')
3
>>> d
{'two': 2, 'four': 4}
>>> d.popitem()
('four', 4)
>>> d
{'two': 2}
>>> d.clear()
>>> d
{}
>>> del d
>>> d
Traceback (most recent call last):
File "", line 1, in
NameError: name 'd' is not defined
请注意: 判断成员资格时,表达式 k in d(d为字典),查找的是键,而不是值
>>> d1={x:str(x) for x in range(1,6)}
>>> d1
{1: '1', 2: '2', 3: '3', 4: '4', 5: '5'}
>>> d2={x:x.lower() for x in 'AEIOU'}
>>> d2
{'A': 'a', 'E': 'e', 'I': 'i', 'O': 'o', 'U': 'u'}
para_list = []
if判断——>二元特征
if sum() = =0:
ok
else:
error
1、编写函数,用列表为参数,判断有无重复元素,并调用函数来验证;(字段重复)
2、将slist = ['a', 'b', 'cd', 'e', 'f', 'cd', 'g', 'h', 'i'] 转换为 [['a', 'b', 'cd', 'e', 'f'], ['a', 'b', 'cd', 'g', 'h', 'i']]
slist = ['a', 'b', 'cd', 'e', 'f', 'cd', 'g', 'h', 'i']
z = [] # 主支
dot_index = [] # 支点的所有位置及最后一个位置
# 输出主支
for i, j in enumerate(slist):
if j == 'cd':
dot_index.append(i)
if i < slist.index('cd'):
z.append(j)
# 添加最后一个位置
dot_index.append(len(slist))
final_list = []
for i in range(len(dot_index) - 1):
final_list.append(z + slist[dot_index[i]:dot_index[i+1]])
print(final_list)
3、查看下面2张图片,看看如何将表格数据用字典表示?