本文实例讲述了Python基础学习之基本数据结构。分享给大家供大家参考,具体如下:前言相
本文实例讲述了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的数组类型,可以包含索引数组和关联数组两种,例如:
<?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 基本数据结构 数字 字符串 列表 元组 集合 字典