您好, 访客   登录/注册

Python之数据结构分析及教学

来源:用户上传      作者:杨菲菲

  摘要:Python功能强大,应用到各行各业,在很多计算机相关专业都开设此课程。文中简要介绍了Python语言的内置数据结构,使用分类、对比教学方法详细分析了内置数据结构的操作,希望对Python语言的教学有帮助。
  关键词:Python;内置数据结构;分类;对比教学方法
  中图分类号:G642 文献标识码:A
  文章编号:1009-3044(2019)30-0130-03
  1重要性
  Python语言是一门跨平台、开源、免费的解释型高级动态编程语言,在八十年代末和九十年代初设计出来后,经过了快速的发展,到目前为止,在多个语言排行榜中位居前三,功能超级强大,应用到各行各业。目前在高校计算机相关专业的人才培养中,Java语言、c语言、Python语言一般都会开设。在教学中发现,相对于java语言、c语言,Python语言有自己的特点,特别是在内置数据结构这方面,相对于其他两门语言比较复杂,同时这些数据结构是python语言的特色,也是其能够灵活应用在各个行业领域的重要原因,要掌握python语言,必须首先要把熟练使用这些内置数据结构。同时,由于在很多高校python课程属于比较新的课程,针对此课程的教学研究也比较少。
  2python的内置数据结构
  数据结构是可以处理一些数据的结构,或者是用来存储一组相关数据的。Python中的内置数据结构有列表、元组、字典、集合,熟练掌握它们的用法可以更加快速的解决实际问题。
  2.1列表(1ist)
  列表由一系列按特定顺序排列的元素组成,与C语言中的数组不同的是,列表可以自动进行内存扩展或收缩,保证元素之间没有缝隙。
  列表中的元素可以各不相同,可以存储整数、实数、字符串等基本类型,也可以是列表、元组、字典、集合以及其他自定义类型的对象,并且列表中数据保存的是数据的指针。
  在形式上,列表的所有元素都放在一对口中,元素之间用逗号进行间隔。
  列表的元素可以进行增删改查,也可以按照索引对其进行访问。
  2.2元组(tupIe)
  元组与列表类似,也是保存的数据的指针,不同的是元组在内存中申请的是固定地址,不可变更,不能修改和删除元组中的某个元素,只能创建和删除整个元组。
  元组里可以存放的元素的数据类型同列表一样,值得注意的是,当元素是类似列表这种可变序列时,情况就不一样了,元组里面的列表是可以对列表进行修改、增加、删除操作的。
  在形式上,元组的所有元素放在一对()里面,元素之间用逗号进行间隔。
  元组可以通过索引进行访问,不能进行元素的修改、添加、删除,可以对整个元组进行删除操作。
  2.3字典(dictionary)
  字典是一系列的键值对,类似于java中的map。字典中的每个元素包含键和值两部分,表示一种映射或对应关系,键值对是没有顺序的。
  在形式上,每个元素的键和值用冒号分隔,不同元素之间用逗号分隔,所有元素放在一对大括号{}中。
  字典中的键可以是python中任意不可变数据,如整数、实数、复数、字符串、元组等,不能使用列表、集合、字典或其他可变类型作为字典的键。
  字典的键不允许重复,值是可以重复的。
  2.4集合(set)
  集合是没有顺序的简单对象的聚集嘲。集合更接近数学上集合的概念。集合中每个元素都是无序的、不重复的任意对象。
  集合中只能是包含数字、字符串、元组等不可变类型的数据,而不能包含列表、字典、集合等可变类型的数据,相当于字典中的键。
  在形式上,集合中所有的元素放在一对大括号{}中,元素之间用逗号分隔。
  對集合可以进行增加删除元素,也可以进行求两个集合的交集、并集、差集等运算。
  3内置数据结构的教学
  Python中的数据结构比较多而且比较复杂,对于这四种内置的数据结构可以采用分类教学法、比较教学法。将其按照有序、无序和可变、不可变以及元素是否重复进行划分,介绍它们的使用方法。
  3.1有序、无序
  有序无序的序指的是元素可以在整个序列中是否有序,针对其使用,就是是否可以通过索引的方式来方位访问元素。
  在这四种数据结构中,列表、元组都是有序,字典和集合是无序。有序的数据结构在对元素进行操作时要掌握索引和切片两个概念。
  (1)双向索引。索引不陌生,在c语言和java语言的数组都出现过,python中的索引有所不同,支持双向索引,第一个元素下标为0,第二个元素为1,如果使用负索引,则最后一个元素下标为一1,倒数第二个元素下标为一2,以此类推。
  (2)切片。切片也是python新增加的特色。切片适用于列表、元组、字符串等类型,应用于列表具有最为强大的功能。可以使用切片来截取列表中的任何部分元素,也可以通过切片来修改和删除列表中的部分元素。切片有三个重要参数:开始位置,截止位置,切片的步长。
  3.2可变、不可变
  可变、不可变指的是序列中的元素是不是可以增加、删除、修改操作。在这四种数据结构中,列表、字典、集合是可变的,元组是不可变的。
  (1)增加元素
  列表增加元素可以使用append方法尾部追加一个元素,使用insert方法向列表任意指定位置插入一个元素,使用extend方法将另一个列表中的所有元素追加至当前列表的尾部。这三种方法的共同点是在原地操作,不影响列表对象在内存中的起始位置。不同地方是它们的执行效率不同,insert方法如果在中间位置进行插入,效率比较低下,因为该位置后的所有元素都要移动,操作时要尽量避免在列表中间位置进行插入操作。
  字典和集合都是无序的,所以在增加元素时不会考虑到位置问题。字典增加元素时,比较简单的方法是字典名[键名]=值名即可,update方法也可以。集合使用add方法增加元素,如果集合中已有,则忽略掉,也可以使用update方法合并另外一个集合中的元素到当前集合中。
  (2)删除元素
  列表删除元素可以使用pop方法删除最后一个元素,也可以通过索引的方式删除指定位置的元素,remove方法用来删除列表中第一个与指定值相等的元素,只是删除第一个,clear方法用于清空列表,也可以使用del命令来删除列表的指定元素和列表。如果删除后还希望使用元素,使用pop方法。
  字典删除元素可以使用pop方法和popitem方法弹出并删除指定的元素,clear方法可以清空字典里面所有的元素,也可以使用del命令来删除字典中指定键值对和删除整个字典。
  集合删除元素可以使用pop方法用于随机删除并返回集合中的一个元素,如果集合为空则抛出异常,remove方法用于删除集合中的指定元素,如果不存在则抛出异常,discard方法从集合中删除指定元素,所不同的是,如果元素不存在则忽略该操作,clear方法清空集合删除所有元素。使用del命令删除整个集合,但是不能用del命令删除集合中的指定元素。
  (3)修改元素
  修改元素对于可变序列来讲,可以直接使用索引找到指定元素进行修改。对于字典修改元素时可以使用update方法来进行修改,同时如果字典中没有该键值对还可以添加的功能。
  集合不涉及到修改元素。
  3.3总结
  使用分类教学法、对比教学法对四种内置数据结构的操作进行总结归类如下表所示:
  对于不可变序列,不涉及到增加、删除、修改操作,对于可变序列中,对比之后发现,列表提供的方法比较多,删除元素都可以使用pop方法弹出元素使用,都可以使用clear方法清空序列,都可以使用del命令删除序列。
  4结束语
  Python的使用非常广泛。通过简要介绍Python语言的内置数据结构,使用分类、对比教学方法详细分析了内置数据结构的操作,希望对Python语言的教学有帮助。
转载注明来源:https://www.xzbu.com/8/view-15070472.htm