Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】


Posted in Python onJune 18, 2019

本文实例讲述了Python基础学习之基本数据结构。分享给大家供大家参考,具体如下:

前言

相比于PHP,Python同样也是脚本解析语言,所以在使用Python的时候,变量和数据结构相对于编译语言来说都会简单许多,但是Python相比于PHP来说,变量类型的定义会比较严格:string->int的转换没有PHP那么方便。但这也让程序稳定性有所提升,例如和客户端交互的时候,数据库取出来的数字int和缓存取出来的数字(默认是string)需要手动进行转换(否则会有报错提示),而PHP不需要手动转换的,返回值类型不对可能会使客户端崩溃。所以本文也针对Python的数据结构作一个基础总结,并在个别部分与PHP作比较。

一、数据结构类型

Python包含的常规数据结构类型有:数字、字符串、List(列表)、Tuple(元组)、Set(集合)、 Dictionary(字典)

二、数据结构说明及其用法

1、常用数字类型:int(有符号整型) 、long(长整型[也可以代表八进制和十六进制]) 、float(浮点型) 、complex(复数:a + bj形式)

2、字符串类型:与PHP、Java等字符串类型一致。

Python字符串常用操作有:

(1)拼接:加号(+)是字符串连接运算符,如 str1 + str2;

(2)重复:星号(*)是重复操作,如 str2 = str1 * 2,表示两个str1字符串重复拼接;

(3)剪切:

①str[0,1]——截取从0开始的一位;

②str[:10]——截取0开始的10位;

③str[:-1]——截取0开始到倒数1位(不包括倒数1位);

(4)查询:str.find(‘<待查询字符串>')——返回查询到的下标;

(5)替换:str.replace(‘<待替换字符串>',' <替换后的字符串>');

(6)分割:str.split(',')——根据','分隔成list;

(7)连接: ','.join(<list>)——把list连接成用','分隔的字符串;

(8)翻转:strrev(<str>);

(9)复制:strncpy(str1,str2,n)——n表示复制指定长度;

(10)大小写转换:str.upper()、str.lower();

(11)长度:len(str);

3、列表(List)类型:list用[ ]标识,是一种有序的集合。从左到右索引默认0开始的,从右到左索引默认-1开始,下标可以为空表示取到头或尾。

List常用操作:

(1)list类型定义:L = ['Adam',95.5, 'Lisa',85, 'Bart',59];

(2)list访问:L[3]、L[-2];

(3)list添加:L.insert(2,'Paul')或直接L[4]=xxx赋值;

(4)list删除:L.pop(2);

(5)list长度:len(L);

(6)list查询:L.index(“<待查询>”)——返回下标;

(7)List循环遍历:for index, value in enumerate(L):

(8)两个list相加合成一个:L1.extend(L2);

(9)list排序:L.sort(cmp=None, key=None, reverse=False);

(10)统计某个元素在list中出现的次数:L.count(<待查询>);

(11)list连接和重复:加号(+)是列表连接运算符,星号(*)是重复操作;

注:python快速生成list方法:[x*(x+1) for x in range(1,100,2)]表示生成列表 [1x2, 3x4, 5x6, 7x8, ..., 99x100]

4、Python元组(tuple)类型:tuple是另一种有序的列表,中文翻译为“ 元组 ”。元组用”()”标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

tuple常用操作:

tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了:

(1)创建:t = ('Adam', 'Lisa', 'Bart')或t = ('Adam',);

(2)访问:t[0]、t[1:5];

(3)组合相加:t1+t2;

(4)删除:del t1;

(5)长度:len(t1);

(6)最大值:max(t1);

(7)最小值:min(t1);

5、字典(dict)类型:字典是无序的对象集合。字典用”{ }”标识,字典当中的元素是通过键来存取的,而不是通过偏移存取。

dict常用操作:

(1)创建:d = {key1 : value1, key2 : value2 };

(2)访问:

①直接访问:d[key1]、d[key2],这种访问方式在key不存在时会报错;

②安全访问:d.get(key1, default=None),这种访问方式,key不存在时返回默认值,默认值没设定的情况下为None;

③不存在时set进去:d.setdefault(key1, default=None);

(3)修改:d[key1] = value1;

(4)删除:

① d.clear(),清空字典所有条目,对象仍存在;

② del d,删除字典对象;

(5)长度:len(d);

(6)返回所有键或值:d.keys()、d.values();

(7)把d2加入到d1:d1.update(d2);

(8)循环遍历:

①for key, value in d.items():

②for key, value in d.iteritems():

③items()和iteritems()区别:

items()返回的是列表对象,而iteritems()返回的是iterator对象。例如:

print dic.items()        #[('a', 'hello'), ('c', 'you'), ('b', 'how')]

print dic.iteritems()   #<dictionary-itemiterator object at 0x020E9A50>

注:iteritor是迭代器的意思,一次返回一个数据项,直到没有为止

(9)取两个字典交集:dict(d1.items() & d2.items());

(10)复制:

① 直接赋值:a = b——其实就是对象的引用,两个变量一模一样;

② 浅拷贝:b = a.copy()——拷贝父对象,不会拷贝对象的内部的子对象;

③ 深拷贝:b = copy.deepcopy(a)——copy 模块的deepcopy方法,完全拷贝了父对象及其子对象(两个完全不同的变量);

浅复制原理:

Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】

深复制原理:

Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】

参考链接来自:https://3water.com/article/163266.htm

6、集合(Set)类型:如果我们只要dict 的 key,不关心 key 对应的 value,目的就是保证这个集合的元素不会重复,set就是这样一种类似于list但值不允许重复的数据结构。

Set常用操作:

(1)创建:s = set(['Adam', 'Lisa', 'Bart', 'Paul']);

(2)访问:s[1]、s[2];

(3)添加:s.add(l);

(4)删除set元素:s.remove(l);

三、与PHP数据结构的一些区别

1、如前言所述,Python的变量数据结构在一开始时也不需要强制声明定义,但一旦赋值后就确定了变量类型,除了简单的数字四则运算能将str进行隐式转换外,大部分不同变量类型直接的运算都需要手动进行变量类型的类型转换。

2、对于PHP的数组类型,可以包含索引数组和关联数组两种,例如:

<?php
$arr = array(
  0=>'1234',
  'a'=>'bcde',
  2=>1234,
  'b'=>5678
  );
print_r($arr);
?>

运行结果如下:

Array
(
    [0] => 1234
    [a] => bcde
    [2] => 1234
    [b] => 5678
)

但是在Python中,这种定义是不被允许的,Python将PHP中的数组分成List(索引数组)和dict(关联数组),二者不可合并在一起。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python实现二分查找算法实例
May 26 Python
Python标准库06之子进程 (subprocess包) 详解
Dec 07 Python
Python多重继承的方法解析执行顺序实例分析
May 26 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
Jul 19 Python
selenium在执行phantomjs的API并获取执行结果的方法
Dec 17 Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 Python
python实现从尾到头打印单链表操作示例
Feb 22 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
Apr 16 Python
离线状态下在jupyter notebook中使用plotly实例
Apr 24 Python
Spring http服务远程调用实现过程解析
Jun 11 Python
pandas实现导出数据的四种方式
Dec 13 Python
matplotlib之多边形选区(PolygonSelector)的使用
Feb 24 Python
python 弹窗提示警告框MessageBox的实例
Jun 18 #Python
python实现五子棋小程序
Jun 18 #Python
Python 实现还原已撤回的微信消息
Jun 18 #Python
PyQt4编程之让状态栏显示信息的方法
Jun 18 #Python
Python直接赋值、浅拷贝与深度拷贝实例分析
Jun 18 #Python
python实现五子棋游戏
Jun 18 #Python
解决python中使用PYQT时中文乱码问题
Jun 17 #Python
You might like
PHP5中使用PDO连接数据库的方法
2010/08/01 PHP
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
一个php生成16位随机数的代码(两种方法)
2014/09/16 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
codeigniter显示所有脚本执行时间的方法
2015/03/21 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
js列举css中所有图标的实现代码
2011/07/04 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
2013/06/08 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
JS中表单的使用小结
2014/01/11 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
js实现内容显示并使用json传输数据
2016/03/16 Javascript
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
详解vue 兼容IE报错解决方案
2018/12/29 Javascript
js实现图片区域可点击大小随意改变(适用移动端)代码实例
2019/09/11 Javascript
JavaScript中的相等操作符使用详解
2019/12/21 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
Python urlopen()函数 示例分享
2014/06/12 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
使用Python横向合并excel文件的实例
2018/12/11 Python
Python面向对象之多态原理与用法案例分析
2019/12/30 Python
CSS3实现swap交换动画
2016/01/19 HTML / CSS
澳大利亚女性快速时尚零售商:Ally Fashion
2018/04/25 全球购物
Notino罗马尼亚网站:购买香水和化妆品
2019/07/20 全球购物
大码女装:Ulla Popken
2019/08/06 全球购物
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
写给女朋友的道歉信
2014/01/12 职场文书
公司会计岗位职责
2014/02/13 职场文书
村党支部换届选举方案
2014/05/02 职场文书
小学教师师德师风个人整改措施
2014/09/18 职场文书
小学生学习保证书
2015/02/26 职场文书
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python
React更新渲染原理深入分析
2022/12/24 Javascript