本文实例讲述了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方法,完全拷贝了父对象及其子对象(两个完全不同的变量);
浅复制原理:
深复制原理:
参考链接来自:https://www.jb51.net/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的数组类型,可以包含索引数组和关联数组两种,例如:
<"color: #ff0000">Python将PHP中的数组分成List(索引数组)和dict(关联数组),二者不可合并在一起。更多关于Python相关内容感兴趣的读者可查看本站专题:《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]