在这篇文章中,我们将演示一下Python中元组(Tuple)、集合(Sets)和字典(Dict)的基本使用。为了演示方便,我们假定一个程序的使用场景。假定我们是某银行总行的信贷业务部门,现在是年底,我们要给各分行制定并下发下一年度的贷款发放指标。最后我们要展示一下指标预计什么时候会下到分行,以及现在是否已经下发给分行。说白了就是告诉某某分行,明年你们要放多少贷款,并且记录好打算什么时候告诉分行,以及是否已经告诉分行了。

好了,基于以上场景,我们先来演示一个元组的使用。
在这个实例中,我们定义了三个元组,分别是ind_chengdu,ind_dalian和ind_harbin,它们分别代表成都,大连和哈尔滨的指标情况。由于我们使用的是元组,所以我们做了一个规定,元组的第1个项目代表分行名称,第2个项目代表指标的值,第3个项目代表预计下发指标的时间,第4个项目代表是否已经下发给了分行。
元组的定义是由圆括号包围起来,每个项目由逗号分隔。其中圆括号在语法层面是可有可无的,但是如果我们的元组是在一个比较复杂的表达式中,那么就必须要加上圆括号。
元组(Tuple)和列表(List)看起来很类似,但是在使用的场景和使用的目的上是不同的。元组是不可变的,其中的元素类型大多比较复杂,而列表是可变的,它所包含的元素类型基本是相同的。用专业一些的话说,元组(Tuple)中包含的元素通常是异构的,而列表(List)中的元素大多是同质的。在上面的例子中,我们可以看到每个元组中都包含了字符串(分行名称),数值(指标值)、日期(预计下发时间)和布尔类型(是否下发分行)。一个元组包含了多种数据类型,而如果是一个列表,则通常只有一种类型,比如我们可以定义一个分行名称的列表,里面全是字符串类型,也就是各个分行的名称。这就是元组和列表在使用场景上的区别。
程序的执行效果如下:
上面我们演示了元组的基本使用场景和用法。下面我们再看一下元组的一些基本语法。
对于一个元组,我们可以用逗号隔开,例如tuple1,整个元组可以用圆括号包围起来,也可以不用圆括包围起来,例如tuple1和tuple2。元组是可以嵌套的,例如tuple3就又嵌套了2个元组。tuple4嵌套了一个元组(Tuple),一个列表(List)
这里我们要特别说明一下最后两个元组的定义,即tuple5和tuple6,如果我们定义一个空元组,那么我们就一定要使用圆括号,就像tuple5,如果我们要定义只有一个元素的元组,那么我们就要在第1个元素的后面加上一个"逗号",大家仔细看一下tuple6的定义。这个语法真的很怪,大家一定要注意。通过执行程序我们可以看到len(tuple5)为0,而len(tuple6)为1。
接下来我们看一下集合(Sets)的使用,通过下面的实例,我们可以看到集合的定义,去重,做差等操作。
集合的生成有两种方法,一种是用set函数,比如我们的single_company_list变量。第二种方法是用花括号,比如再往下的my_single_company_list变量。
如果我们给set函数传入一个列表(list),则我们在创建一个集合(Set)的同时,还会对传入的列表进行去重。
本程序用一个for循环演示了对集合的遍历,通过遍历,我们也可以看到集合中的元素已经是经过去重之后的效果了。
关于集合,我们还可以进行一些数学操作。比如"-","|","&","^"。
下面我们看一下程序的运行结果,结合效果我们解释一下这些操作的含义。
为了方便大家阅读,我把两个做比较的变更放在了执行结果里,并且用红色字体标出(我们只展示变量内容,用于讲解,毕竟company_list是一个列表,之后用set构造成了一个集合)。为了简化描述,我用a代表第一集合,b代表第二个集合。
"-"的含义是做差,即公司名称在a中,但是不在b中。所以我们看到"哈尔滨4公司"和"哈尔滨1公司"只在a中存在,不在b中出现。
"|"的含义是公司名称即在a中,也在b中,所以计算的结果是同时包含了a和b的元素,相当于一个逻辑或
"&"的含义是要求公司名称同时在a和b中出现。计算的结果就是只有"哈尔滨2公司"和"哈尔滨3公司"同时在a和b中都存在。相当于一个逻辑与
"^"的含义是没有同时出现在a和b中的公司名称。我们看一下a中的"哈尔滨1公司"和"哈尔滨4公司",只在a中出现,b中没有。而b中的"哈尔滨5公司"只在b中存在,a中又没有。所以计算的结果就是"1公司","4公司"和"5公司"。
最后我们通过一个字典类型(Dict),改进一下文章开头的程序,以便介绍一下字典的使用。
在这个实例中,我们对之前的程序进行了改造,我们使用字典(Dict)来代替元组(Tuple)。变量ind_chengdu便是一个字典。字典的定义要求以花括号包围,元素以逗号间隔,每个元素由冒号分开,形成一个key:value的小对子。字典本身是一个没有顺序的集合。在这个例子中,由于key:value的存在,我们可以更加清晰的看到我们要引用的数据。比如我们想引用分行名称,我们可以直接写成branch['name'],程序的可读性也明显增强。
关于集合的key,Python中规定只能是不可变类型,通常来说都是字符串(像本程序一样)或者数值。元组作为不可变类型,也是可以作为key,但是要求元组中不能直接或间接(毕竟元组还可以嵌套)的包含可变类型,例如包含列表(list)。
程序的执行效果如下:
以上就是针对元组、集合和字典的实例讲解。大家可以有兴趣的时候自已把这些源代码敲一遍,直观的感受一下程序的运行效果。在源代码中如果出现汉字乱码,可以像我的例子一样,引入uniout,如果没有的话,大家也可以用pip安装一下。相关的内容可以看一下《Python中文乱码的2种解决方案 》的介绍
我使用的环境:Windows 7 + Python 2.7.17 + PyCharm Community Edition 2016.1.5
如果大家认为我的文章还可以,真心希望能帮我点一个"关注",粉丝的数量真的对我很重要,也算是对我努力结果的一个支持,谢谢大家了。


还没有评论,来说两句吧...