Python第二话 初识复杂数据类型(list、diction…

2018-06-18 02:07:35来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

上一篇我们简单认识了数据类型:数字number和字符串string,这篇我们就来隆重介绍一下重量级的数据类型:列表list、字典dictionary和元组tuple。

一、列表List:

①列表是什么?

比如我是小白,在定义变量的时候我们可以写  me = '小白'。妈妈是小白妈妈 mother = '小白妈妈'   ,爸爸是小白爸爸 father = '小白爸爸'。针对一对一的关系,我们可以直接定义变量。但是如果我想表达家庭,定义一个变量叫family,family = 我+妈妈+爸爸 。那

我们应该怎么给它赋值呢?这里就要引出 [List] 这个概念。

List的表现形式:   List = []                 #列表用方括号标识

List = [a,b,c,d]                                # a、b、c、d叫list中的元素,不同元素之间用“,”逗号分隔

此时 family = ['小白','小白妈妈','小白爸爸']   

list表现了一对多的关系,list的元素可以是数字number(1,2,3,4),字符串string('小白','小白妈妈','小白爸爸'),甚至可以是列表(嵌套)。比如说小白嫁给了小黑,有了自己的小家庭,那么此时family1 =  ['小白','小黑','小白妈妈','小白爸爸'],为了体现出小

白和小黑是一家的,new_family =   [['小白','小黑'],'小白妈妈','小白爸爸'] 。此时就在family这个list中,就嵌套了一个小的list元素。一个里面套一个列表,叫二维数组;一个里面套一个列表,里面的列表再套一个列表,这个叫三维数组,几层就是几维列表

②那么我们怎么在family中找到小白呢?

list的元素是有自己的编号的,学名“下标、索引、角标、编号”。最左边的第一个 元素的下标是0,最右边的最后一个元素下标是-1。从左向右数,是依次递增0,1,2...;从右向左数,是依次递减,-1,-2,-3...

从列表中找元素:list[下标],比如在family中,小白的下标是0或-3,所以family[0]或family[-3]得到的就是小白。如何输出整个family?很多人会认为family[0:2],但是实际操作会发现,此时只能输出“小白”“小白妈妈”,因为list的下标选取规则是“顾头不顾尾”,所以只有family[0:3]或者family[0:],才能输出全部元素。

那如何在new_family中找到小白呢?答案是new_family[0][0]。多层嵌套时谨记,不要急,一层一层去取就很轻松了

③下面介绍一些列表的常用操作:

定义一个list:cities = ['广州','天津']

#增

cities.append('北京')     #在列表末尾增加一个元素

print(cities)
>> cities = ['广州','天津','北京']

cities.insert(0,'上海')     #在指定的位置增加元素

print(cities)
>> cities = ['上海','广州','天津','北京']

#删

cities.pop(0)    #删除指定位置的元素

print(cities)
>> cities = ['广州','天津','北京']

cities.remove('北京')    #删除指定的元素

print(cities)
>> cities = ['广州','天津']

del cities[-1]    #删除指定位置的

print(cities)
>> cities = ['广州']

cities.clear()    #清空list

print(cities)
>> cities = []

#改
cities[1]='南京'    #需指定下标修改,如果指定的下标不存在,会报错

#查
print(cities[0])    #指定位置的查找
print(cities.index('广州'))   #获取元素的下标,如果找不到那个元素的话,会报错

print(cities.count('广州'))   #查看元素在list里面出现了多少次

④列表的常用方法:

#反转:

my_list = ['python','jmeter','charles','postman']
print(my_list.reverse())     #把my_list反转一下,不会返回任何内容,此时再次打印list,会发现顺序已修改

print(my_list)
>> ['postman', 'charles', 'jmeter', 'python']

#排序

nums = [9,2,34,12,34,457,2342]

nums.sort()    #升序

print(nums)
>>[2, 9, 12, 34, 34, 457, 2342]

nums.sort(reverse=True)     #降序

print(nums)
>>[2342, 457, 34, 34, 12, 9, 2]

#合并

print(cities+cities2)    #合并list

#复制
print(cities*3)     #复制几次

 

二、元组Tuple:

元组与list类似,不同之处在于元组的元素不能修改

Tuple的表现形式:Tuple =  ()    #元组用小括号‘’()‘’标识

Tuple = (1,)     #如果元组中只有一个元素,需要在元素后加上 “,” 逗号

Tuple = (a,b,1,2)      # 元素之间用逗号隔开,元组中的元素可以是数字number、字符串string或者是嵌套类型。

注:元组虽然不可修改,但是如果元素中包含可变的列表或者字典,是可以修改的。比如:

nums = (9, 2, 34, ['test'])
nums[3][0] ='a'
print(nums)
>>(9, 2, 34, ['a'])

①元组的常见方法:

print('words2',type(words2))         #查看类型
print(t.index(2))                            #找到元素的下标
print(t.count(2))                            #查找元素在元组中的个数

 

三、字典Dictionary:

① 什么是字典?

字典和列表一样,是一个可变的对象的集合。假设我们要录入一个人的信息,比如name:小白 , sex:女, hobby:男  等等,我们既需要录入结果,同时需要录入文字说明。list可以存储结果,但是无法带上说明文字,所以我们引入了一个新的数据类型--字典。

Dict的表现形式:  Dict = {key : value}     #字典用花括号”{}”标识,字典中的元素是key-value形式,类似于json。

Dict = {'name':'小白',  'sex':'女', 'hobby':'男'}     #元素之间用逗号隔开,元素可以是数字number、字符串string或者是嵌套类型。

② 区别:

  列表是有序的,字典是无序的;

  字典当中的元素是通过来存取的,而列表是通过下标

  字典中的key必须是唯一标识,就如同list的下标一样;

  字典取值速度比列表

③字典的常用操作:

定义一个字典  infos= {}

#增

infos['name']='小白'         #增加一个key-value
infos.setdefault('age','25')      #增加一个key-value
infos.setdefault('name','小黑')       #如果key存在的话,不会修改原来key里面的值
infos['name']='小黑'      #如果key存在的话,会修改原来key对应的value;如果key不存在,会创建一个新的key-value

#删

infos.pop('name')       #指定key来删除,会删除key及对应的value值
infos.popitem()          #随机删除一个key及对应的value
del infos['phone']       #指定key来删除,如果key存在会删除key及value;如果key不存在,会报错
infos.clear()               #清空字典

#改

infos['name']='小黄'    #如果key存在的话,会修改原来key对应的value;如果key不存在,会创建一个新的key-value

#查

print(infos.get('phone'))             #取不到这个key的话,会返回None
print(infos.get('phone',110))      #如果取不到这个key的话,默认就是110
print(infos['phone'])                   #如果key不存在会报错

④字典的常用方法:

print(infos.values())         #获取字典所有的value

print(infos.keys())           #获取字典所有的key

print(infos.items())         # 获取字典所有的key-value

温馨提示:

number、string是不可变,改变等于一个新的;tuple 是不可修改;list、dictionary是可变的

number、string是一对一的关系;list、dictionary、tuple是一对多的关系

以上为本篇全部内容,对于数据类型的使用方法,还是需要多摸索和练习。以下为福利:

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Python爬虫学习==>第二章:MongoDB环境配置

下一篇:Python学习 —— 本地时间与UTC时间