> 文档中心 > python数据结构

python数据结构

python提供了大量的内置结构,包括了列表、元组、字典以及集合。

python列表

列表我们可以简单的把它理解为按照索引存放各种集合,在列表中,每一个位置代表一个元素。在python中,列表的对象方法是list提供的。

列表的特点:

  1. 可存放多个值。
  2. 列表是有序的。
  3. 按照从左到右的顺序定义列表元素,下标从0开始顺序访问。
  4. 列表是可变的,也就是说可以根据列表的索引位置来修改列表的值。

下面结合具体案例了解列表的工厂函数:

#append:添加的元素放在最后一位#新建一个列表list1 = [1,2,3]#使用append向list1中添加元素list1.append(4)print(list1)
# insert:根据自己的需求insert到列表的索引位置# 新建一个列表list1 = [1, 2, 3]# 使用insert添加元素,insert方法会有两个参数insert(位置下标,元素值)list1.insert(3, 4)print(list1)
list1 = ['Java', 'Go', 'Python', 'PHP']# count:列表中的对象在列表中存在几位print('python在列表中存在几位:', list1.count('Python'))# 寻找出对象的索引信息print('Python在列表里面的索引信息:', list1.index('Python'))# pop:默认删除列表里面的最后一位对象并且返回来print('删除的对象返回来:', list1.pop())# remove:在列表里面删除指定的元素信息list1.remove('Python')print('在列表里面删除Python的对象:', list1)# 新增一个可interable的对象信息list1.extend(['selenium', 'appium'])print('追加后的列表信息:', list1)# clear 列表的清空list1.clear()print('清空后的列表内容:{0},列表⻓度:{1}'.format(list1, len(list1)))

python元组

上面介绍到列表是可变的,而元组刚好是不可变的,但是元组里对象的内容是可以可变的,这点需要特别注意。当元组里面的对象只有一个时,记得需要加“,”,如果不加的话,就不是元组的数据类型,是字符串的数据类型。

下面结合具体案例了解元组和元组的工厂函数:

'''当元组里面的对象只有一个时,记得需要加“,”,如果不加的话,就不是元组的数据类型,是字符串的数据类型。'''tuple1=('Python',)tuple2=('Python')print('tuple1的数据类型:{0},tuple2的数据类型:{1}'.format(type(tuple1),type(tuple2)))
tuple1 = ('Python', 'Go', 'Java', ['Selenium','Appium'])  # 显示一个对象在tuple里面的索引位置 print('Go的索引位置:',tuple1.index('Go')) #显示一个对象在tuple里面的个数 print('Go的个数:',tuple1.count('Go'))
'''tuple的对象是不可以变化,但是里面对象的值可以改变。'''tuple1 = ('Python', 'Go', 'Java', ['Selenium', 'Appium'])# 修改tuple第四个对象的值tuple1[3][0] = 'WebDriver'print('修改tuple对象的值:', tuple1)

当尝试修改元组里面对象的值的话,会报错。

Traceback (most recent call last):File "/Applications/code/Yun/Issue9/demo.py", line 9, in tuple1[0]='python'TypeError: 'tuple' object does not support item assignment

python字典

字典的特性:

  1. 字典是无序的。
  2. 字典是使用key-value键值对的方式来存储数据。

下面结合代码了解字典:

dict1 = {'name': 'admin', 'age': 18, 'address': 'beijing', 'work': 'python'}# 获取字典里面所有的key值for item in dict1.keys():    print(item)# 获取字典里面所有的value的值 for item in dict1.values():print(item)# 依据key来修改和获取字典的值 print('name对应的值内容为:', dict1['name'])dict1['name'] = '张三'print('修改后的字典内容:', dict1)# 字典里面增加新的值内容dict1['薪资'] = 30print('增加内容后的字典:', dict1)# 两个字典的合并 dict2 = {'company': '阿里巴巴'}dict1.update(dict2)print('两个字典合并后的内容:', dict1)

字典循环输出:

dict1 = {'name': 'admin', 'age': 18, 'address': 'beijing', 'work': 'python'}for k, v in dict1.items():    print(k, ":", v)

由于字典是无序的,所以想实现字典的排序,使用到的关键字是sorted,可以根据需求对字典内的key或value的值进行排序:

dict1 = {'name': 'admin', 'age': 18, 'address': 'beijing', 'work': 'python'}key_dict1 = sorted(dict1.items(), key=lambda item: item[0])print('依据key对象对字典排序后的结果信息:\n', key_dict1)# 根据valie来对字典进行排序 value_dict1 = sorted(dict1.items(), key=lambda item: item[1])print('依据value对象对字典排序后的结果信息:\n', value_dict1)

python集合

 集合是一个数学概念,可以由一个或者多个确定的元素构成的整体,我们最常用的就是集合里面的交集,也就是获取两个对象里面共同的值。

下面上代码:

list1 = ['Python', 'Allure', 'Pytest']list2 = ['Java', 'TestNG', 'Allure']print('获取两个对象里面的共同值:', set(list1) & set(list2))print('获取两个对象里面的差集:', set(list1) | set(list2))print('获取两个集合对象里面的包含关系:', set(list1) ^ set(list2))

输出结果:

获取两个对象里面的共同值: {'Allure'}获取两个对象里面的差集: {'TestNG', 'Python', 'Allure', 'Java', 'Pytest'}获取两个集合对象里面的包含关系: {'Python', 'Java', 'Pytest', 'TestNG'}