AI产品经理Python必读技术之序列的应用

我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

AI产品经理Python必读技术之序列的应用 在学习数学的时候,我们学习到过等差数列、等比数列以及比较有名的斐波那契数列等,其中斐波那契数列又称为兔子数列,有兴趣的朋友可以去百度一下,这里不做详细。

而在我们Python当中又分为 序列->数据存储方式->数据结构,其中在Java或C语言中以数组为主,而Python当中则又可分为列表、元组、字典、集合、字符串几类。

一、序列的概述

1)索引

概念:序列是一块用于存放多个值的连续的内存空间,并且按照一定顺序排列,可通过索引取值。

比如,我们可以把酒店的每一个房间比作内存的空间,而房间号就是索引,而这整个房间排序的概念则称为序列。

索引:索引在序列中就是一个编号,是从0开始数。在这里我们需要编程思维,因为计算机把0当做了我们日常生活中的1。因为计算机只识别0和1,所以无论我们输入什么都会被转化称为0或1。

代码:string = “失望之酒,希望之杯!”

print(string[1])

输出:望

在Python中索引的值还可以是负数,例如:

元素1 元素2 元素3 元素4 元素5

-5  -4  -3  -2  -1

代码:string = “失望之酒,希望之杯!”

print(string[-1])

输出:杯

2)切片

概念:切片又称为分片,就像我们生活当中据木头一样,左边砍一节,右边砍一节,最后中间就是我们想要的木头。

在序列中如下:

元素1 元素2 元素3 元素4 元素5

如果我们想要:元素2 元素3 元素4

想要取出来,我们就可以使用:sname[start:end:step]

其中,start是起始位置,end结束位置,step为步长

代码:

nba = [“乔丹”,”拉塞尔”,”张伯伦”,”邓肯”,”拉塞”,”波塞冬”]

print(nba[1:5])

输出:[‘拉塞尔’,’张伯伦’,’邓肯’,’拉塞’]

print(nba[0:5:2])

输出:[‘乔丹’,’张伯伦’,’拉塞’]

print(nba[5])  #获取索引值为5,此处不是切片应用

输出:波塞冬

print(nba[:5])

输出: [“乔丹”,”拉塞尔”,”张伯伦”,”邓肯”,”拉塞”]

print(nba[:])

输出:[“乔丹”,”拉塞尔”,”张伯伦”,”邓肯”,”拉塞”,”波塞冬”]

print(nba[5:]) #输出索引值为5后面的所有

输出:[‘波塞冬’]

3)序列相加

序列1 + 序列2 = 序列1序列2

代码:

nba1 = [“乔丹”,”陈涛”]

nba2 = [“麦当娜”,”杰克逊”]

nba = nab1 + nba2

print(nba)

输出:[“乔丹”,”陈涛”,“麦当娜”,”杰克逊”]

序列相加需注意:只能是同类型的序列相加,列表+列表、元组+元组、字符串+字符串,而不能是不同类型的:列表+元组、字符串+元组、字符串+列表,都是错误的。

代码----不用类型序列相加:

nba1 = [“乔丹”,”陈涛”]

print(“我要相加” + nba1)

输出:错误。

代码----相同类型不同元素类型相加

nba1 = [“乔丹”,”陈涛”]

nba2 = [1,2,3]

print(nba1 + nba2)

输出: [“乔丹”,”陈涛”,1,2,3]

4)序列的乘法

在数学中,我们常见的乘法如下:乘数 * 乘数 = 积

在Python中的序列中,我们也可以如此运用:序列 * 乘数 = 重复n次的序列

代码:

phone = [“HuaWei”,”ChenTao”,”Lisi”,”Libai”]

print(phone * 3)

输出:[“HuaWei”,”ChenTao”,”Lisi”,”Libai”,“HuaWei”,”ChenTao”,”Lisi”,”Libai”,“HuaWei”,”ChenTao”,”Lisi”,”Libai”]

代码:

number = [1,2,3]

print(number * 3)

输出:[1,2,3,1,2,3,1,2,3]

代码:

emptylist = [None] * 5

print(emyptylist)

输出:[None,None,None,None,None]

代码:

print(“*” * 10)

输出:**********

4) 检查某个元素是否是序列的成员在Python中,检查某个元素是否在序列中可通过in进行查看,语法如下:

value in sequence

代码:

nba = [“陈涛”,”李绮文”,”张三”]

print(“科比” in  nba)

输出:False

print(“陈涛” in nba)

输出:True

print(“科比” not in  nba)

输出:True

5) 计算序列的长度

在Python当中提供了len()来计算序列的函数。

代码:

number = [1,2,3,4,5,6]

print(len(number))

输出:6

代码:

string = “我是陈涛”

print(len(string))

输出:4

注意:len()统计,不区分字母或者汉字

在Python当中max()函数找出序列当中的最大值。

代码:

number = [1,2,3,4,5,6]

print(max(number))

输出:6

在Python中min()函数找出序列当中的最小值。

代码:

number = [1,2,3,4,5,6]

print(min(number))

输出:1

一、列表

列表相当于酒店房间的排序,在列表中可以放入:对象、整数、序列、实数、布尔值、字符串。在Python中,列表是内置的可变序列->[元素1,元素2,元素3,......,元素n]。列表的使用共包含:访问列表元素、列表的创建和删除、遍历列表、添加修改和删除列表元素、对列表进行统计计算、对列表进行排序、列表推导式、二维列表的使用。

1)列表的创建和删除

(1)使用赋值运算符直接创建列表

语法:listname = [元素1,元素2,元素3,......,元素n]

代码:

number = [2,4,6,8,10]

verse = [“春眠不觉晓”,”处处蚊子咬”]

python = [‘优雅’,’自由’,”简单”,’’’温柔’’’]

untile = [“Python”, 28 ,”人生苦短,我用Python”,[“爬虫”,”云计算”,”Web开发”]]

(2)创建空列表

emptylist = []

注意:比如有一个函数需要传递一个列表函数,那么我们可以使用空列表进行传递。

(3)创建数值列表

学生成绩列表:[11,100,23,53]

玩家得分情况列表:[111,232,343,12321,343434]

代码:

list(range(2,21,2))  #list()函数,将数值转化为列表

输出:[2,4,6,8,10,12,14,16,18,20]

代码:

string = “远航科技”

list(string)

输出:[“远”,”航”,”科”,”技”]

(4) 删除列表

代码:

number = [2,4,6,8,10]

del number

输出:删除成功

注意Python自带垃圾处理回收机制,会自动销毁不用的列表,所以即使我们不手动删除,Python也会自动将其销毁。

2)访问列表元素

代码:

python = [“Python”,28,“人生苦短,我用Python”,[“爬虫”,“自动化运维”,“云计算”,“Web开发”]]

print(python)

输出:[“Python”,28,“人生苦短,我用Python”,[“爬虫”,“自动化运维”,“云计算”,“Web开发”]]

print(python[2])

输出:人生苦短,我用Python

print(python[1:3])

输出:[28,“人生苦短,我用Python”]

代码:import datetime #导入日期时间类

mot = [“今天星期一:\n坚持下去不是因为我很坚强,而是因为我别无选择。”,”今天星期二:\n含泪播种的人一定能笑着收获。”,”今天星期三:\n做对的事情比把事情做对重要”,”今天星期四:\n命运给予我们的不是失望之酒,而是希望之杯。”,“今天星期五:\n不要等到明天,明天太遥远,今天就行动。”,“今天星期六:\n求知若渴,虚心若愚。”,“今天星期日:\n成功将属于那些从不说“不可能”的人。”]

day = datetime.datetime.now().weekday()  #获取当前的星期

print(mot[day]) #输出每日一贴

输出:今天星期三,

做对的事情比把事情做对重要

3)遍历列表

遍历是指,从头到尾都访问一遍。

(1)使用for循环遍历

for item in listname: #输出item

代码

print(“2018年NBA常规赛西部排名:”)

team = [“火箭队”,“勇士队”,“雷霆队”,“爵士队”] #定义一个列表

for item in team:

print(item) #输出每一个球队的名称

输出:

2018年NBA常规赛西部排名:

火箭队

勇士队

雷霆队

爵士队

(2)使用for循环和enumerate()函数实现

for item in enumerate(listname):   #输出index和item

代码:

print(“2018年NBA常规赛西部排名:”)

team = [“火箭队”,“勇士队”,“雷霆队”,“爵士队”] #定义一个列表

for index,item in enumerrate(team):

print(index + 1,item) #输出每一个球队的名称

输出:

2018年NBA常规赛西部排名:

1,火箭队

2,勇士队

3,雷霆队

4,爵士队

实例代码:

print(“输入2017~2018赛季NBA西部联盟排名:\n”)

team = [“火箭队”,“勇士队”,“雷霆队”,“爵士队”,”马刺队”,“深林狼”,“狐狸队”,“七匹马”]

for index,item in enumerater(team):

if index % 2 == 0:

print(item + “\t\t”,end = ‘’)

else:

print(item) #换行输出

4)添加、修改和删除列表元素

}

(1)添加元素

可以通过append()函数添加元素:列表1.appened(新元素) = 列表1中的元素,新元素

phone = [“摩托罗拉”,“诺基亚”,”三星”,“OPPO”] #定义列表

print(len(phone))

输出:4

phone.appened(“iPhone”) #新添加的元素

print(len(phone))

输出:5

秘籍:列表对象提供了insert()方法向列表的指定位置插入元素。

代码:

phone = [“摩托罗拉”,“诺基亚”,”三星”,“OPPO”] #定义列表

phone.insert(0,”没有手机”)

print(phone)

输出:[“没有手机”,“摩托罗拉”,“诺基亚”,”三星”,“OPPO”]

可以使用extend()方法,将一个表的数据全部添加到另一个表中,listname.extend(seq)。

代码:

oldlist = [“贾巴尔”,”乔丹”,”奥拉朱旺”,”巴克利”,“姚明”] #NBA名人堂原有人员列表

newlist = [“基德”,”纳什”,”希尔”,”拿破仑”] #新增加人员

oldlist.extend(newlist) #追加新球星

print(oldlist)

输出:[“贾巴尔”,”乔丹”,”奥拉朱旺”,”巴克利”,“姚明”,“基德”,”纳什”,”希尔”,”拿破仑”]

总结:

append()方法是追加元素,而extend()方法是添加列表。

(2)修改元素

代码:

list1 = [“长亭外”,”古道边”,”芳草碧连天”]

list1[2] = “一行白鹭上青天” #修改元素

print(list)

输出: [“长亭外”,”古道边”,“一行白鹭上青天”]

(3)删除元素有两种方法可以进行删除,一种是:根据索引进行删除,还有一种是根据元素值进行删除。

代码:

list1 = [“长亭外”,“古道边”,”芳草碧连天”]

list1[2] = “一行白鹭上青天” #修改元素

print(list1)

del list1[2]

print(“删除后:”,list)

输出:[“长亭外”,“古道边”]

根据元素值进行删除。

代码:

list1 = [“长亭外”,“古道边”,”芳草碧连天”]

list1.remove(“芳草碧连天”)

print(“删除后:”,list1)

输出:[“长亭外”,“古道边”]

注意:如果删除的元素不存在,则会返回错误信息,此时可加入语句进行判断:

list1 = [“长亭外”,“古道边”,”芳草碧连天”]

if “芳草碧连天” in list1:

list1.remove(“芳草碧连天”)

print(“删除后:”,list1)

输出:[“长亭外”,“古道边”]

1)对列表进行统计计算

Python有三个函数来进行列表统计,分别是:count()、index()、sum()。

count()函数格式:listname.count(obj)

代码:

song = [“云在飞”,”后来”,“送你一匹马”,“马在叫”,“云在飞”]

number = song.count(“云在飞”)

print(number)

输出:2

index()函数格式:listname.index(obj)

代码:

song = [“云在飞”,”后来”,“送你一匹马”,“马在叫”,“云在飞”]

position = song.index(“云在飞”)

print(position)

输出:0

如果查找的不存在,将显示错误。为了防止查找的不存在,可以提前进行预防:

代码:

song = [“云在飞”,”后来”,“送你一匹马”,“马在叫”,“云在飞”]

if “送你一匹” in song:

position  = song.index(“送你一匹”)

print(position)

输出:无结果

sum()方法格式:sum(iterable[,start])

代码:

grade = [12,23,43,100,89,21,32,12]

total = sum(grade)

total2 = sum(grade,1000)

print(total)

print(total2)

输出:

332

1332

2)对列表进行排序

排序分为两种:降序和升序。分为两种方法:sort()方法、

使用sort()方法实现排序后,原列表中的元素顺序将会被改变。

语法是:listname.sort(key = None,rever = False) 其中key为是否区分字母大小写,rever用来指定是升序还是降序来进行排列。

代码:

grade = [81,12,12,23,42,12,32,100,12] #保存成绩的列表

print(“原列表:”,grade)

grade.sort() #进行升序排列

print(“升序:”,grade)

输出:

原列表:[81,12,12,23,42,12,32,100,12]

升序:[12,12,12,12,23,32,42,81,100]

代码:

char = [“cat”,”Tome”,”Angle”,”pet”]

print(“原列表:”,char)

char.sort() #进行序列排序

print(“升序:”,char) #先排序大写,再排序小写

输出:原列表:['cat', 'Tome', 'Angle', 'pet']

升序:['Angle', 'Tome', 'cat', 'pet']

代码:

char = [“cat”,”Tome”,”Angle”,”pet”]

print(“原列表:”,char)

char.sort(key = str.lower)   #不区分大小写进行升序排列

print(“升序:”,char) #先排序大写,再排序小写

输出:原列表:['cat', 'Tome', 'Angle', 'pet']

升序:['Angle', 'cat', 'pet', 'Tome']

使用内置的sorted()函数实现排序后原列表的元素顺序不变。

sorted(iterable,key = None,reverse = False),其中 key设置排序的大小,reverse设置按升序排列还是按降序排列。

代码:

char = [“cat”,”Tome”,”Angle”,”pet”]

print(“原列表:”,char)

char1 = sorted(char) #进行升序排列

print(“升序:”,char1) #先排序大写,再排序小写

char2 = sorted(char,reverse = True) #进行降序排列

print(“降序:”,char2)

print(“原列表:”,cahr)

输出:

原列表:[‘cat’,’Tome’,’Angle’,’pet’]

升序:[‘Angle’,’Tome’,’cat’,’pet’]

降序:[‘pet’,’cat’,’Tome’,’Angle’]

原列表:[‘cat’,’Tome’,’Angle’,’pet’]

总结:可使用列表对的sort()方法来实现,内置的sorted()函数来实现,这两个方法的基本作用基本相同,所不同的是使用sort()方法会改变原列表的顺序,而使用sorted()函数方法将不会改变原列表的顺序。

7)列表推导式

在Python中,列表推导式是指,可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表。

格式:list = [Expression for var in range]

代码:

import random #导入生成随机数的模块

list1 = []  #定义一个空列表

for i in range(10):

list1.appened(random.randint(10,100)) #向列表当中添加随机数

print(list1)

输出:[12,12,43,23,12,32,12,32,98,12]

代码(列表推导式):

import random    #导入生成随机数的模块

list1 = [random.randint(10,100) for i in range(10)]     #定义一个空列表

print(list1)

输出:[12,12,43,23,12,32,12,32,98,12]

代码:

list1 = [i * i for i in range(2,11,2)]

print(list1)

输出:[4,16,36,64,100]

根据列表生成指定需求的格式

newlist = [Expression for var in list]

代码:

price = [1000,500,800,888,666]

sale = [int(x * 0.5) for x in price]

print(“原价格:”,price)

print(“打折后的:”,sale)

输出:

原价格:[1000,500,800,888,666]

打折后的:[500,250,400,444,333]

格式:newlist = [Expression for var in list if condition]

代码:

price = [1000,500,800,888,666]

sale = [x for x in price if x > 800]

print(“原价格:”,price)

print(“大于800元的:”,sale)

输出:

原价格:[1000,500,800,888,666]

大于800元的:[1000,888]

8)二维列表

二维列表以行和列组合而成,格式:room[行下标][列下标]。

代码:

room = [[1101,1102,1103,1104,1105,1106,1107],

[2101,2102,2103,2104,2105,2106,2107],

[3101,3102,3103,3104,3105,3106,3107],

[4101,4102,4103,4104,4105,4106,4107]]

print(room)

代码(for循环生成):

room = []

for i in range(1,5): #楼层

room.append([]) #添加一个空列表

for j in range(1,8): #每一层的房间数

room[i-1].append(i * 1000 + 100 + j) #为每一层的列表添加元素

print(room)

输出:[[1101,1102,1103,1104,1105,1106,1107],[2101,2102,2103,2104,2105,2106,2107],

[3101,3102,3103,3104,3105,3106,3107],[4101,4102,4103,4104,4105,4106,4107]]

代码(列表推导式):

room = [[i * 1000 + 100 + j for j in range(1,8)] for i in range(1,5)]

print(room)

输出:

[[1101,1102,1103,1104,1105,1106,1107],[2101,2102,2103,2104,2105,2106,2107],

[3101,3102,3103,3104,3105,3106,3107],[4101,4102,4103,4104,4105,4106,4107]]

一、元组

元组和列表相似,也可以放置各种类型的值,但是元组是不可以改变的。

元组格式:(元素1,元素2,.....,元素n)

1) 元组的创建和删除

符合运算符直接创建元组,格式:tuplename = (元素1,元素2,元素3,....,元素n)

代码:

number = (7,14,21,28,35,42)

print(number)

data = (“爱我中华”,“渔舟唱晚”,“爱在北京”)

print(data)

untile = (“python”,28,(“人生苦短”,”我用Python”),[“爬虫”,“云计算”,“游戏”])

print(untile)

verse = (“一片冰心在玉壶”) #此处verse不是元组,而是一组字符串

verse1 = (“一片冰心在玉壶”,) #此处多加了一个, 可以做单个元组

print(verse)

print(verse1)

输出:(7,14,21,28,35,42)

(“爱我中华”,“渔舟唱晚”,“爱在北京”)

(“python”,28,(“人生苦短”,”我用Python”),[“爬虫”,“云计算”,“游戏”])

一片冰心在玉壶

(“一片冰心在玉壶”,)

代码:

coffeename = (‘蓝山’,‘卡布奇诺’,“曼特宁”,“摩卡”,“麝香猫”,“哥伦

比亚”)

print(coffeename)

输出:(‘蓝山’,‘卡布奇诺’,“曼特宁”,“摩卡”,“麝香猫”,“哥伦

比亚”)

代码(创建空的元组):

emptytuple = ()

print(emptytuple)

输出:()

创建数值元组:

代码:

tuple1 = tuple(range(2,21,2))

print(tuple1)

输出:(2,4,6,8,10,12,14,16,18,20)

删除元组,格式:del tuplename

代码:

tuple = tuple(range(2,21,2))

print(tuple)

del tuple1

print(tuple1)

输出:错误提示,因为已没有元组已被删除

1) 访问元组元素

访问元组元素可以直接使用print()函数输出,也可以使用索引输出,或者使用切片输出。

代码:

untile = (“Python”,28,(“人生苦短”,“我用Python”),[“爬虫”,”云计算”,”

游戏”])

print(untile)

print(untile[2])

print(untile[1:3]) #在结束的时候,不包括结束的索引的

输出:

(“Python”,28,(“人生苦短”,“我用Python”),[“爬虫”,”云计算”,”游戏”])

(“人生苦短”,“我用Python”)

代码:

coffeename = (“蓝山”,”卡布奇诺”,”曼特宁”,”摩卡”,”麝香猫”,”哥伦比

亚”) #定义一个元组print(“你好,欢迎光临~薏米咖啡馆\n我店有:”)

for name in coffeename:

print(name + “咖啡” , end = “”)

输出:

你好,欢迎光临~薏米咖啡馆

我店有:

蓝山咖啡 卡布奇诺咖啡 曼特宁咖啡 摩卡咖啡 麝香猫咖啡 哥伦比亚咖啡

代码:

print(“2017~2018赛季NBA西部联盟前八名的球队:”)

team = (“火箭”,”勇士”,”雷霆”,”马刺”,“森林狼”,“爵士”,“开拓者”,

“陈涛”) #定义一个

for index,item in enumbertate(team):

if index % 2 == 0:

print(item + “\t\t” , end = ‘’) #不换行

else:

print(item) #换行

输出:

2017~2018赛季NBA西部联盟前八名的球队:

火箭 勇士

雷霆 马刺

森林狼 爵士

开拓者 陈涛

2) 修改元组

代码:

coffeename = (“1”,”2”,”3”,”4”,”5”,”6”)

coffeename[4] = ”五”

print(coffeename)

输出:显示错误

代码:

coffeename = (“1”,”2”,”3”,”4”,”5”,”6”)

coffeename = (“1”,”2”,”3”,”4”,”五”,”6”)

newcoffeename = (”5”,”维也纳”)

allcoffeename = coffeename + newcoffeename

print(coffeename)

print(allcoffeename)

输出:

(“1”,”2”,”3”,”4”,”五”,”6”)

(“1”,”2”,”3”,”4”,”五”,”6”,”5”,”维也纳”)

3) 元组推导式

元组推导式和列表推导式是相似的,元组推导式可以快速生成一个元组,或者根据某个元组生成满足指定需求的元组。

代码:

import random #导入随机数模块

randomnumber = (random.randint(10,100) for i in range(10))

print(randomnumber) #此处和列表不同,此处只生成一个生成器对象,而不是像列表一样直接生成列表

print(tuple(randomnumber))

输出:

(62, 79, 57, 45, 27, 51, 74, 73, 17, 18)

代码:

import random #导入随机模块

randomnumber = (random.randint(10,100) for i in range(10))

for i in randomnumber: #如果要将元组生成器里面的元素取出,可以采取这种方法

print(i,end = ‘’) #输出每个元素的值

代码:

randomnumber = (random.randint(10,100) for i in range(10))

print(randomnumber.__next__()) #输出的是第一个元素

print(randomnumber.__next__())  #输出的是第二个元素

print(randomnumber.__next__())  #输出的是第三个元素

注意:元组生成器被使用过就会被销毁。

4) 元组与列表的区别

元组   列表

不可变序列:   可变序列:

(不能添加、修改和删除元素,可整体替换)   (随时添加、修改或者删除)

支持切片的操作                                  支持切片的操作

(只能访问元组中的元素)         (可以访问、修改元组中的元素)

元组访问速度快   列表访问速度慢

元组可以作为字典的键   不能作为字典的键

一、字典

新华字典的使用方法是先找到索引,然后再找到具体的字。那么在Python中,也是同样的意思,Python中的字典是采用键值对来进行组合的,其中键有只有一个而值可以有多个。

1)字典的创建和删除

怎么创建这个字典?

dictionary = {‘key1’:’value1’,’key2’:’value2’,....,’keyn’:’valuen’}

代码:word = {‘che’:’车’,’chen’:’陈’,’cheng’:’称’} #定义一个字典print(word)

输出:{‘che’:’车’,’chen’:’陈’,’cheng’:’称’}

代码:

key = [‘che’,’chen’,’cheng’,’chi’]

value = [‘车’,’陈’,’称’,‘吃’]

zip1 = zip(key,value) #转化为zip对象

print(zip1)

word = dict(zip1) #转化为字典

print(word)

输出:

{'che': '车', 'chen': '陈', 'cheng': '称', 'chi': '吃'}

代码:

name = [“绮梦”,”冷伊一”,”香凝”,”黛兰”]

sign = [“水瓶座”,“射手座”,“双鱼座”,“双子座”]

dictionary = dict(zip(name,sign))

print(dictionary)

输出:创建名称和星座对应的字典注意:如果把name换成元组也是可以创建字典的

创建空字典:

代码:

word = {}

print(word)

代码:

word = dict()

print(word)

代码:

dictionary = dict(绮梦 = ‘水瓶座’,陈涛 = ‘金牛座’,夏心语 = ‘牛座’)

print(dictionary)

输出:

{‘绮梦’:“水瓶座”,”陈涛”:“金牛座”,“夏心语”:“牛座”}

代码:

name = [“绮梦”,”冷伊一”,”香凝”,”黛兰”]

dictionary = dict.fromkeys(name)

print(dictionary)

del dictionary #把字典进行删除

dictionary.clear() #把字典进行清空

2)访问字典

代码,通过指定的键访问:

name = [“绮梦”,”冷伊一”,”香凝”,”黛兰”]

sign = [“水瓶座”,“射手座”,“双鱼座”,“双子座”]

dictionary = dict(zip(name,sign)) #转换为字典

print(dictionary[“冷伊一”])

输出:射手座

代码,如果用不存在的键进行访问:

name = [“绮梦”,”冷伊一”,”香凝”,”黛兰”]

sign = [“水瓶座”,“射手座”,“双鱼座”,“双子座”]

dictionary = dict(zip(name,sign)) #转换为字典

print(dictionary[“冷伊”]) #键值不存在

输出:错误提示

代码,对不存在的情况进行判断:

name = [“绮梦”,”冷伊一”,”香凝”,”黛兰”]

sign = [“水瓶座”,“射手座”,“双鱼座”,“双子座”]

dictionary = dict(zip(name,sign)) #转换为字典

print(dictionary[“冷伊”] if “冷伊” in  dictionary  else “我的字典里没有此人”)

输出:我的字典里没有此人

代码:

name = [“绮梦”,”冷伊一”,”香凝”,”黛兰”]

sign = [“水瓶座”,“射手座”,“双鱼座”,“双子座”]

dictionary = dict(zip(name,sign)) #转换为字典

print(dictionary.get(“冷伊一”))

输出:射手座

代码,不进行键值是否存在的情况,进行判断:

name = [“绮梦”,”冷伊一”,”香凝”,”黛兰”]

sign = [“水瓶座”,“射手座”,“双鱼座”,“双子座”]

dictionary = dict(zip(name,sign)) #转换为字典

print(dictionary.get(“冷伊”))

输出:None

代码:

name = ["1","2"]sign = ["3",'4']dictionary = dict(zip(name,sign))name1 = ["3","4"]sign1 = ["7","8"]dictionary1 = dict(zip(name1,sign1))out = dictionary1.get(dictionary.get("1"))print(out)

输出:7

3)遍历字典

代码:

sign = {"绮梦":"水瓶座","冷伊一":"射手座","香凝":"双鱼座","黛兰":"双子座"}print(sign.items())

输出:dict_items([('绮梦', '水瓶座'), ('冷伊一', '射手座'), ('香凝', '双鱼座'), ('黛兰', '双子座')])

代码:

sign = {"绮梦":"水瓶座","冷伊一":"射手座","香凝":"双鱼座","黛兰":"双子座"}for item in sign.items():    print(item)

输出:

('绮梦', '水瓶座')

('冷伊一', '射手座')

('香凝', '双鱼座')

('黛兰', '双子座')

代码:

sign = {"绮梦":"水瓶座","冷伊一":"射手座","香凝":"双鱼座","黛兰":"双子座"}for key,value in sign.items():    print(key,"的星座是",value)

输出:

绮梦 的星座是 水瓶座

冷伊一 的星座是 射手座

香凝 的星座是 双鱼座

黛兰 的星座是 双子座

代码,获取字典当中的所有键:

sign = {"绮梦":"水瓶座","冷伊一":"射手座","香凝":"双鱼座","黛兰":"双子座"}for key in sign.keys():    print(key)

输出:

绮梦

冷伊一

香凝

黛兰

代码,获取字典当中的所有值:

sign = {"绮梦":"水瓶座","冷伊一":"射手座","香凝":"双鱼座","黛兰":"双子座"}for value in sign.values():    print(value)

输出:

水瓶座

射手座

双鱼座

双子座

4)添加、修改和删除字典元素

dictionary[key] = value

在字典中添加键和值,代码:

sign = {"绮梦":"水瓶座","冷伊一":"射手座","香凝":"双鱼座","黛兰":"双子座"}sign["陈涛"] = "金牛座"print(sign)

输出:

{'绮梦': '水瓶座', '冷伊一': '射手座', '香凝': '双鱼座', '黛兰': '双子座', '陈涛': '金牛座'}

在字典中修改键和值,代码:

sign = {"绮梦":"水瓶座","冷伊一":"射手座","香凝":"双鱼座","黛兰":"双子座"}sign["陈涛"] = "金牛座"sign["陈涛"] = "牛座"print(sign)

输出:

{'绮梦': '水瓶座', '冷伊一': '射手座', '香凝': '双鱼座', '黛兰': '双子座', '陈涛': '牛座'}

删除一个元素,代码:

sign = {"绮梦":"水瓶座","冷伊一":"射手座","香凝":"双鱼座","黛兰":"双子座"}sign["陈涛"] = "金牛座"sign["陈涛"] = "牛座"del sign["绮梦"]   #删除元素print(sign)

输出:

{'冷伊一': '射手座', '香凝': '双鱼座', '黛兰': '双子座', '陈涛': '牛座'}

5)字典推导式

字典推导式类似于列表推导式,只不过是将列表的[]改变为字典的{}。

代码:

import randomrandomdict = {i:random.randint(10,100) for i in range(1,5)}print(randomdict)

输出:

{1: 11, 2: 42, 3: 70, 4: 41}

字典推导式,实现输出的代码:

name = ["陈涛","夏文娱"]sign = ["金牛座","双子座"]dict1 = { i:j  for i,j in zip(name,sign)}   #字典推导式print(dict1)

输出:

{'陈涛': '金牛座', '夏文娱': '双子座'}

二、集合(set)

在Python中有两种集合,一种是可变集合set,一种是不可变集合frzenset。

在数学中,把一些能够确定的不同对象看成一个整体,那么这个整体是由这些对象构成的集合。

在Python中,也和数学中的集合类似,用于保存不重复元素,最好的应用就是去重。

在定义字典的时候,我们使用的是{},那么在定义集合的时候我们还是使用{},那我们应该怎么区分呢?

代码:

set1 = {"水瓶座","射手座","双鱼座","双子座"}    #定义一个集合print(set1)set2 = {"水瓶座","射手座","双鱼座","双子座","水瓶座"}  #出现两个水瓶座,只保留一个print(set2)

输出:

{'射手座', '水瓶座', '双子座', '双鱼座'}

{'射手座', '水瓶座', '双子座', '双鱼座'}

1、集合是无序的

2、集合是不重复的

代码:

set1 = {"水瓶座","射手座","双鱼座","双子座"}    #定义一个集合print(set1)set2 = {"水瓶座","射手座","双鱼座","双子座","水瓶座"}print(set2[1]})

输出:

File "C:/Users/Administrator/PycharmProjects/Python/第一章/1.py", line 4

print(set2[1]})

^

SyntaxError: invalid character in identifier

//集合中,不能通过索引来获取某一个元素

1) 创建集合

代码:

python = {"绮梦","冷伊一","香凝","紫萱"}  #选择Python同学的集合c = {"冷伊一","零语","三圣母"}  #选择C语言同学的集合print("选择Python学生名字集合:",python)print("选择C学生名字集合:",c)

输出:

选择Python学生名字集合: {'绮梦', '香凝', '紫萱', '冷伊一'}

选择C学生名字集合: {'冷伊一', '三圣母', '零语'}

集合和字典的区别,集合的格式:{元素1,元素2,元素3,....,元素n},字典的格式:{‘键1’:‘值1’,‘键2’:‘值2’,......,’键n’:‘值n’}

因为在定义空字典的时候,我们使用的是{}实现的,哪么在创建空集合的时候便不能再以{}来实现,于是我们采取:set()表示空集合。

创建空集合,代码:

set1 = set()print(set1)

输出:

set()

将其他序列转化为集合,代码:

name = ["绮文","冷伊一","香凝"]print("列表:",name)set1 = set(name) #转化为集合print("集合:",set1

输出:

列表: ['绮文', '冷伊一', '香凝']

集合: {'绮文', '香凝', '冷伊一'}

如果列表存在重复的元素,那么转化为集合会怎样?代码:

name = ["绮文","冷伊一","香凝","绮文"]print("列表:",name)set1 = set(name) #转化为集合print("集合:",set1)

输出:

列表: ['绮文', '冷伊一', '香凝', '绮文']

集合: {'绮文', '香凝', '冷伊一'}

2) 集合的添加和删除

向集合当中添加元素可使用add()来实现,格式如下:setname.add(element),其中element不能是列表、元组等可迭代的对象。

使用add向集合中添加元素:

mr = set(["零基础学Java","零基础学安卓","零基础学C","零基础学PHP"])   #定义一个集合mr.add("零基础学Python")print(mr)

输出:

{'零基础学PHP', '零基础学Python', '零基础学安卓', '零基础学C', '零基础学Java'}

//集合不能添加 重复的元素,就算多次添加,也只不能重复

使用remove()删除指定元素,使用pop()随机删除一个元素,使用clear()删除全部元素。

mr = set(["零基础学Java","零基础学安卓","零基础学C","零基础学PHP"])   #定义一个集合mr.add("零基础学Python")print(mr)mr.remove("零基础学Java")   #删除一个指定的元素print(mr)

输出:{'零基础学C', '零基础学Python', '零基础学安卓', '零基础学PHP', '零基础学Java'}

{'零基础学C', '零基础学Python', '零基础学安卓', '零基础学PHP'}

如果想删除的元素不存在,则会报错:

mr = set(["零基础学Java","零基础学安卓","零基础学C","零基础学PHP"])   #定义一个集合mr.add("零基础学Python")mr.remove("1")   #删除一个指定的元素print(mr)

输出:

Traceback (most recent call last):

File "C:/Users/Administrator/PycharmProjects/Python/第一章/1.py", line 3, in

mr.remove("1")   #删除一个指定的元素

KeyError: '1'

判断是否想删除的元素是否存在在当前集合中,代码:

mr = set(["零基础学Java","零基础学安卓","零基础学C","零基础学PHP"])   #定义一个集合mr.add("零基础学Python")if "1" in mr:    mr.remove("1")   #删除一个指定的元素print(mr)

输出:

{'零基础学Python', '零基础学C', '零基础学Java', '零基础学安卓', '零基础学PHP'}

如何通过pop()方法来移除一个元素:

mr = set(["零基础学Java","零基础学安卓","零基础学C","零基础学PHP"])   #定义一个集合mr.pop() #随机移除一个元素print(mr)

输出:

{'零基础学C', '零基础学安卓', '零基础学PHP'}

//pop()元素为随机删除集合的方法

使用clear()方法清空集合:

mr = set(["零基础学Java","零基础学安卓","零基础学C","零基础学PHP"])   #定义一个集合mr.clear()print(mr)

输出:

set()

使用del删除整个集合:

mr = set(["零基础学Java","零基础学安卓","零基础学C","零基础学PHP"])   #定义一个集合del clear()print(mr)

输出:

File "C:/Users/Administrator/PycharmProjects/Python/第一章/1.py", line 2

del clear()

添加集合、删除集合:

mr = set(["零基础学Java","零基础学安卓","零基础学C","零基础学PHP"])   #定义一个集合ms = set(['冷伊一','零语','新词','圣博'])mr.add("零语")    #添加一个元素ms.remove("零语")  #移除一个元素print(mr)print(ms)

输出:

{'零基础学C', '零基础学PHP', '零语', '零基础学安卓', '零基础学Java'}

{'新词', '圣博', '冷伊一'}

1) 集合的交集、并集和差集运算

交集:& 并集:| 差集:- 对称差集:^

代码:

python = set(["零基础学Java","零基础学安卓","零基础学C","零基础学PHP"])   #定义一个集合c = set(['冷伊一','零语','新词','圣博'])print("选择Python语言的学生名字:",python)print("选择C语言的学生名字:",c)print("交集运算:",python & c)print("并集运算:",python | c)print("差集运算:",python - c)print("对称差集:",python^c)

输出:

选择Python语言的学生名字: {'零基础学PHP', '零基础学安卓', '零基础学Java', '零基础学C'}

选择C语言的学生名字: {'零语', '圣博', '冷伊一', '新词'}

交集运算: set()

并集运算: {'冷伊一', '零基础学C', '圣博', '零基础学Java', '新词', '零语', '零基础学安卓', '零基础学PHP'}

差集运算: {'零基础学PHP', '零基础学Java', '零基础学安卓', '零基础学C'}

对称差集: {'冷伊一', '零基础学C', '圣博', '零基础学Java', '新词', '零语', '零基础学安卓', '零基础学PHP'}

总结----列表、元组、字典和集合的区别:

list tuple dictionary set

[] () {key:value} {}

可变:list、dictionary、set;    不可变:tuple;

可重复:list、tuple、dictionary;   不可重复:set;

有序:list、tuple; 无序:dictionary、set;

随意打赏

提交建议
微信扫一扫,分享给好友吧。