浅析Python语言自带的数据结构有哪些
作者:第零区块 发布时间:2022-01-14 04:08:44
Python作为一种脚本语言,其要求强制缩进,使其易读、美观,它的数据类型可以实现自动转换,而不需要像C、Java那样给变量定义数据类型,使其编写非常方便简单,所以广受大家的欢迎。
现如今,Python已经广泛的应用于数据分析、数据挖掘、机器学习等众多科学计算领域。所以既然涉及到科学计算,深入了解Python原生提供的数据结构是很有必要的,这样才能在数据的海洋中游刃有余、得心应手。本文便以此展开,做一个归纳整理,方便收藏。
Python
一、序列结构
首先介绍的数据结构是序列结构,所谓序列,也就是元素顺序是很重要的,不同元素顺序的序列是不同的序列。Python中含有六种内建的序列结构,分别是list、tuple、string、unicode、buffer、xrange。
1.1、list(列表)
list,列表是一种序列,可以看做是一种数组,但不同的于其它语言的是,Python列表中的元素可以是任何数据类型,诸如,数字、字符串等等。
下面为创建list结构的几种方式:
//1.通过中括号括起已知的元素创建list
mylist = ['orange', 'apple', 1,2,3.14];
//2.通过中括号创建空list,然后用append()追加动态元素
mylist = [];
mylist.append('orange');
//3.通过list()方法创建空list
mylist = list();
选取list元素的方法:
//通过中括号加下对应下标选取,下标从0开始,-1为倒数第一个元素,以此类推
mylist[0];
mylist[-1];
切片是Python中序列结构独有的一种操作,意思是从序列中选取一个子序列,凡是序列均可切片,list是序列,所以list可以切片。切片方法:
//通过[begin:end]方式完成切片
mylist = [1,2,3,4,5];
mylist[0:2]; //生成的序列为[1,2,3]list常用方法:
list.append(x),在列表的末尾添加一个元素。
list.insert(i, x),在给定的位置插入一个元素,第一个参数是要插入的元素的索引。
list.remove(x),移除列表中第一个值为 x 的元素,如果没有这样的元素,则抛出异常。
list.clear(),删除列表中所有的元素。
list.index(x),返回列表中第一个值为 x 的元素的从零开始的索引,如果没有这样的元素,则抛出异常。
list.count(x),返回元素 x 在列表中出现的次数。
list.reverse(),反转列表中的元素。
机器学习
1.2、tuple(元组)
tuple,元组和列表一样,都以看做是一种数组,元素可以是任何数据类型,甚至可以嵌套。唯一的区别是,元组内的元素一旦创建,是不可修改的,也不可追加。并且元组使用小括号创建,同样元组可切片,切片方法同list。
//1.通过小括号括起已知的元素创建tuple
mytuple = (1, 3, 'hello!')
//2.不可以用append()往tuple追加,因为tuple一旦创建,不可变更获取tuple中的元素:
//和列表一样,通过中括号加下对应下标选取,下标从0开始,-1为倒数第一个元素,以此类推
mytuple[0];
mytuple[-1];1.3、string,unicode,buffer,xrange
这四个也是序列,做科学计算由于不太常用,不做太多介绍。
string可以看成是少量单个字符构成的list,如:
mystring = 'orange';
mylist = ['o','r','a','n','g','e'];由于string也是序列,所以也可以切片,切片就当做单个字符构成的list切片即可,很多原理类似,不做过多介绍。
unicode和string类似,不过可以支持原生unicode编码的序列,如\\u4f60\\u597d。
buffer可以看成大量字符构成的list。
xrange可以看成纯数字构成的list。
科学计算
二、散列结构
所谓散列结构,区别于上述序列结构,散列结构中,元素顺序是不重要的,顺序不同的散列,还是同一个散列。散列结构有set、dict。
2.1、set(集合)
set,集合,集合是由不重复元素组成的无序的集,重点是不重复,和数学中的集合类似。无序是散列结构的特点,集合是一种散列结构,所以集合也有无序的特点。
创建set的方法:
//和list很类似,可对应参考
//1.通过大括号括起已知的元素创建set
myset = {'red','blue',2.71};
//2.通过set()方法创建空set,注意不能用{}创建空set,这样创建的是空dict
//3.然后用add()添加动态元素,注意不是append
myset = set();
myset.add('yellow');
Python的set集合可以支持并集,交集,差集,对称差等数学运算:
//创建集合a
a = set('abracadabra');
//创建集合b
b = set('alacazam');
------------------
print(a)
//结果:{'a', 'r', 'b', 'c', 'd'}
------------------
print(a - b); //差集
//结果:{'r', 'd', 'b'}
------------------
print(a | b); //并集
//结果:{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
------------------
print(a & b); //交集
//结果:{'a', 'c'}
------------------
print(a ^ b); //对称差
//结果:{'r', 'd', 'b', 'm', 'z', 'l'}
set常用方法:
set.remove(x),移除集合中值为 x 的元素,如果没有这样的元素,则抛出异常。
set.isdisjoint(set2),判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
set.issubset(set2),判断集合set是否包含于set2
set.issuperset(set2),判断集合set是否包含set2,issubset与issuperset是一对互逆操作。
2.2、dict(字典)
dict,字典,字典由键值对组成,具有唯一性,可变性。字典是可变对象但字典的键的唯一的,是不可变对象。理解字典的最好方式,就是将它看做是一个 键 : 值对的集合。
创建dict的方法:
//1.通过大括号括起键值对创建dict
mydict = {'name':'tom','age':'24'};
//2.通过dict()方法创建dict
mydict = dict(name = 'tom',age = 24);
//3.通过大括号创建空dict,然后通过中括号添加键值对
mydict = {};
mydict['tel'] = '1300000000';
获取dict中的元素:
//需要已经知道键的名称,否则无法获取,除非遍历
mydict.get('tel');
dict常用方法:
dict.copy(),拷贝出一个新的字典。
dict.setdefault({'sex':'man'}),有则查,无则增。
dict.update({'sex':'male'}),有则改,无则增。
dict.pop('tel'),指定删除,参数必须要有需要删除的键。
dict.clear(),清空字典。
dict.keys(),查询字典中所有的键。
dict.values(),查询字典中所有的值。
dict.items(),查询字典中所有的键值对。
以上即为Python自带的数据结构,共分为序列结构和散列结构两大类,序列结构有list、tuple、string、unicode、buffer、xrange,散列结构有set、dict。
总结
以上所述是小编给大家介绍的浅析Python语言自带的数据结构有哪些,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:http://developer.51cto.com/art/201908/602003.htm
猜你喜欢
- 本文实例讲述了Python实现向QQ群成员自动发邮件的方法。分享给大家供大家参考。具体实现方法如下:原理:我们需要先获取QQ群中的所有成员并
- Python个人博客程序开发实例框架设计中,我们已经完成了 数据库设计、数据准备、模板架构、表单设计、视图函数设计、电子邮件支持 等总体设计
- 在本文中,我们向您介绍一些提示和技巧,以帮助您更快地编写代码Python的可读性和设计简单性是其广受欢迎的两个主要原因。一些常见的Pytho
- Python下实现定时任务的方式有很多种方式。下面介绍几种循环sleep:这是一种最简单的方式,在循环里放入要执行的任务,然后sleep一段
- 本文实例讲述了Python编程实现控制cmd命令行显示颜色的方法。分享给大家供大家参考,具体如下:基于win7 + python3.4运行效
- 中介者模式中介者模式(Mediator Pattern)是一种常用的设计模式,用于解决各个对象之间的复杂依赖关系,使得各个对象之间可以独立地
- 活在当下的程序员应该都听过“面向对象编程”一词,也经常有人问能不能用一句话解释下什么是“面向对象编程”,我们先来看看比较正式的说法。把一组数
- 在类中每次实例化一个对象都会生产一个字典来保存一个对象的所有的实例属性,这样非常的有用处,可以使我们任意的去设置新的属性。每次实例化一个对象
- 问题有一个元素序列,想知道在序列中出现次数最多的元素是什么解决方案collections 模块中的 Counter 类转让给女士为此问题所设
- 1|0使用yield完成多任务import timedef test1(): while True: print("-
- 昨天晚上在家里把WM设计好的好台界面做成Html,在家里只用IE8和FF做了测试,感觉还行,除了感觉IE8还不成熟,渲染比较慢且不稳定外,标
- 1. imageZMQ库实现imageZMQ库链接:https://github.com/jeffbass/imagezmq该库原本是用于树
- 优化数据库的注意事项:1、关键字段建立索引。2、使用存储过程,它使SQL变得更加灵活和高效。3、备份数据库和清除垃圾数据。4、SQL语句语法
- 这篇文章主要介绍了Python SSL证书验证问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 本文实例总结了Python操作redis方法。分享给大家供大家参考,具体如下:python连接方式可参考:https://www.jb51.
- 一、新手常犯的错误在论坛看到很多帖子代码中都有一个共同的基本错误,字段类型错误。程序和数据库是紧紧相连的,数据库字段文本型或时间型的都使用单
- 本文实例讲述了Python事务操作实现方法。分享给大家供大家参考,具体如下:#coding=utf-8import sysimport My
- asp连接mysql的问题ASP连接Mysql数据库的问题。下了一个MySql 的ODBC驱动。做了个小测试。顺利通过。先记录下来,中间还有
- 有时候使用到获取本机IP,就采用以下方式进行。#!/usr/bin/python import socketimport stru
- """This module contains code fromThink Python by Allen