python 判断空字典_python语言基础-4:python语言特有的数据结构

在前面的课程中讲过,字符串其实也是一种数据结构,但绝大部分编程语言都包含对这种数据结构的处理,所以我们把它放在通用结构部分来讲述。严格地说,整数和小数,也都是数据结构。同样绝大部分编程语言都包含它们的处理,而且整数与小数的处理与数学十分相似,所以几乎不用额外讲述。

本章,我们讲两个python语言特有的并且特别常用的数据结构,它们是:

  1. 列表
  2. 字典
227e88417b7eaf586464ac94f8598e36.png

列表

所谓列表,就是将若干元素,按一定的顺序串连起来。这里的元素,可以是任何python中的对象:数字、字符串、函数、对象等等,都可以。列表中的一个元素是另外一个列表,或者是后面将讲的字典、元组、集合,也没有任何问题。它是一种非常灵活的数据结构。

为什么python把列表作为一个内置的数据结构,就是因为它太有用了。任何一组有一定关联性的事物,都可以把它看作列表。在后面的课程我们会看到非常具体的例子,这里先整体地了解一下它的常见操作。

对列表的常见操作包括如下的一些功能:

  • 初始化空列表和列表常数
  • 按编号访问列表中的元素
  • 添加一个元素
  • 修改一个元素
  • 删除一个元素
  • 截取列表的一部分
  • 判断一个元素是否在列表中
  • 列表遍历
  • 列表排序

我们用一段程序来详细展示列表的基本操作:

# 一、初始化空列表和列表常数print('一、初始化空列表和列表常数---')# 空列表a=[]# 列表常数b=[3,5,7]c=['ab', 'abcd', 'aef', 'h', 'aef']print(a)print(b)print(c)# 二、按编号访问列表中的元素print('二、按编号访问列表中的元素---')print(b[0])# 负数代表从列表后面数,-1是最后一个print(c[-1])# print(a[0])   #超出范围会报错,看一下是什么错# 三、在列表末尾添加一个元素print('三、添加一个元素---')# 在末尾添加b.append(9)c.append('hello')print(b)print(c)# 在中间添加b.insert(0, 2)c.insert(1, 'nice')print(b)print(c)# 四、修改一个元素print('四、修改一个元素---')b[2]=10# 同时显示列表的长度,用len函数print(b, len(b))c[3]="speed"print(c, len(c))# 五、删除一个元素,三种方法print('五、删除一个元素---')# 1 通用删除,用del特殊语句del b[3]print(b, len(b))# 2 按内容删除,只删第一个c.remove('aef')print(c, len(c))# 3 按编号删除c.pop(2)print(c, len(c))# 六、截取列表的一部分print('六、截取列表的一部分---')b1= b[2:3]print(b1)c1= c[-3:]print(c1)c2= c[:-3]print(c2)# 七、判断一个元素是否在列表中print('七、判断一个元素是否在列表中--')# 判断是元素if 'aef' in c:    print('包含')else:    print('不包含')# 但不能判断子列表if c1 in c:    print('包含')else:    print('不包含')# 八、列表遍历print('八、列表遍历----------------')for i in b:    if i%2==1:        print(i)# 九、列表排序print('九、列表排序----------------')# 从小到大b.sort()print(b)# 反向c.sort(reverse=True)print(c)# 按其它逻辑排序def strlen(x):    return len(x)# 比如,按字符串长度排序c.sort(key=strlen)print(c)

整体执行结果就不展示了,请朋友们自行复制代码并运行,把每个阶段的运行结果都看明白即可。

字符串的操作与列表有很多相似之处,比如按编号访问,截取字符串的一部分,判断一个字符是否在字符串中。列表长度与字符串长度,都是同样使用len()函数来获取。但字符串没有按编号修改字符的功能。

字典

字典这个名字不是不能商榷,在其它语言中或许有其它的含义。不过我们理解它的含义就好了,其实就是“键值对”的概念。比如一个简单的学生和某次考试的信息:

姓名 = 张三

年龄 = 15

语文成绩 = 85

数学成绩 = 95

这一概念在python中被纳入了内置的基本数据结构,因为它也是极为常用的。如果把字典和列表合在一起使用,形成一个字典的列表,就成为一个小型的数据库。字典在很多情况下可以取代其它语言中必须使用对象(或结构)的地方。

在后面的编程中,我们会经常遇到字典,这里我们同样先整体地了解一下字典的常见操作:

  • 初始化空字典和字典常数
  • 按键值访问字典的值
  • 增加一个键值
  • 修改一个键值
  • 删除一个键值
  • 获取字典的一部分
  • 判断一个键是否在字典中
  • 字典遍历
  • 字典排序

从外表看,字典虽然和列表有着明显的不同,但是从操作上却可以非常类似,几乎是一一对应的。我们用下面一段程序,来完整展示字典的基本操作:

# 一、初始化空字典和字典常数print('一、初始化空字典和字典常数---')# 空字典a={}# 字典常数b={1:3,2:5,3:7}c={'name':'张三', 'age':15, 'score':90, '兴趣爱好':['爬山', '游泳', '摄影']}print(a)print(b)print(c)# 二、按键值访问字典中的值print('二、按键值访问字典中的值---')print(b[2])print(c['兴趣爱好'])# print(c['班级'])   #不存在的键值会报错,看一下是什么错# 三、在字典中增加一个键值print('三、在字典中增加一个键值---')b[4]=9c['班级']='2班'print(b)print(c)# 四、修改一个键值print('四、修改一个键值---')b[1]=8c['score']=95# 同时显示字典的长度,同样是len函数print(b, len(b))print(c, len(c))# 五、删除一个键值print('五、删除一个键值---')# 1 通用删除,用del特殊语句del b[3]print(b, len(b))# 2 根据键名删除c.pop('score')print(c, len(c))# 六、截取字典的一部分,只能编程实现print('六、截取字典的一部分---')# 选择所需的键值,构成一个列表name1= {1,2}# python中无论是字典还是列表,都可以用这样一种方式来生成b1={key:b[key] for key in name1}print(b1)name2= {'name', 'age'}c1={key:c[key] for key in name2}print(c1)# 七、判断一个元素是否在列表中print('七、判断一个元素是否在列表中--')# 仍然使用 in 操作符来判断if 'aef' in c:    print('包含')else:    print('不包含')# 特殊数据结构,不能作为键值''' 注释本行,打开错误的代码运行,看看有什么提示if c1 in c:    print('包含')else:    print('不包含')#'''# 八、字典遍历print('八、字典遍历----------------')for i in b:    print(i, '=',b[i])for i in c:    print(i, '=',c[i])# 九、字典排序print('九、字典排序---')# 字典本身没有排序,但可以按不同的顺序进行遍历# 按键的顺序遍历,这里用到了sorted函数,对键排序,返回为一个列表print(sorted(c))for i in sorted(c):    print(i, '=',c[i])# 按值的顺序遍历# 这里用到了字典的items函数print(b.items())# 以及函数的lambda简化写法# 这里的lambda kv: kv[1]等价于# def func1(kv):#   return kv[1]for i in sorted(b.items(), key = lambda kv: kv[1]):    print(i[0], '=', i[1])

同样,请朋友们自行复制代码运行,看结果。可以自己尝试修改,运行。

给大家一个提示,修改代码运行时,有时可以特意改错代码,看看出错提示是什么,这样在自己编程时遇到类似的错误就能多一些提示。

本节课的重点是列表和元组,具体操作的方法不必特别记忆。朋友们可以先把上面这两段展示操作的代码复制保存。在自己编程时,用到类似的功能,能够查到即可。使用得多的,自然就会记住了;用的少的,能查也就可以了。

其它特殊数据结构

除了列表和字典,python还支持另外一些比较好用的数据结构。

元组。元组和列表几乎完全一样,但是不能添加、修改、删除。

集合。集合也和列表相似,但不能重复,也没有排序的概念。

这两个数据结构的直接使用相对较少,我们这里不展开,待使用时再具体介绍。

35e5d1bed9fceedb32998be08dc2db9a.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值