[Python学习路线]--Python基础no.06

  • 时间:2019-06-11 03:34 作者:FANGQI777 来源:FANGQI777 阅读:131
  • 扫一扫,手机访问
摘要:回顾上次所学,简单理解了在Python中有返回值、无返回值、有参、无参的函数。本节将学习的是Python中的list, tuple, dict, set这种复合的高级数据类型。1. Listlist是一个有序集合。像Array一样可以在其后加入[x]的形式来访问其第x个元素。其中x可以为负数,当其为

回顾上次所学,简单理解了在Python中有返回值、无返回值、有参、无参的函数。本节将学习的是Python中的list, tuple, dict, set这种复合的高级数据类型。

1. List

list是一个有序集合。像Array一样可以在其后加入[x]的形式来访问其第x个元素。其中x可以为负数,当其为负数时表示倒数第几个。比方 list[-1] 表示list中倒数第一个元素。

List的相关操作函数

MethodDescription
list.append(x)把一个元素增加到列表的结尾]。
list.extend(L)通过增加指定列表的所有元从来扩充列表。
list.insert(i, x)在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x) 。
list.remove(x)删除列表中值为 x 的第一个元素。假如没有这样的元素,就会返回一个错误。
list.pop([i])从列表的指定位置移除元素,并将其返回。假如没有指定索引,a.pop()返回最后一个元素。元素随即从列表中被移除
list.clear()移除列表中的所有项。
list.index(x)返回列表中第一个值为 x 的元素的索引。假如没有匹配的元素就会返回一个错误。
list.count(x)返回 x 在列表中出现的次数。
list.sort()对列表中的元素进行排序。
list.reverse()倒排列表中的元素。
list.copy()返回列表的浅复制。
# List的使用a = [66.66, 777, 777, 1, 131.13]# countprint("a.count(777), a.count(66.66), a.count(2)")print(a.count(777), a.count(66.66), a.count(2))print(a)# insertprint("a.insert(2, -1)")a.insert(2, -1)print(a)# appendprint("a.append(777)")a.append(777)print(a)# indexprint("a.index(777)")print(a.index(777))print(a)# removeprint("a.remove(777)")a.remove(777)print(a)# reverseprint("a.reverse()")a.reverse()print(a)# sortprint("a.sort()")a.sort()print(a)
FANGQIdeMacBook-Pro:PythonStudy fangqi$ python3 ex16.py a.count(777), a.count(66.66), a.count(2)2 1 0[66.66, 777, 777, 1, 131.13]a.insert(2, -1)[66.66, 777, -1, 777, 1, 131.13]a.append(777)[66.66, 777, -1, 777, 1, 131.13, 777]a.index(777)1[66.66, 777, -1, 777, 1, 131.13, 777]a.remove(777)[66.66, -1, 777, 1, 131.13, 777]a.reverse()[777, 131.13, 1, 777, -1, 66.66]a.sort()[-1, 1, 66.66, 131.13, 777, 777]

2. Tuple

另一种有序列表叫元组:tuple。tuple和list非常相似,但是tuple一旦初始化就不能修改。

>>> a = ('aaa', 'bbb', 'ccc')

现在,a这个tuple不能变了,它也没有append(),insert()这样的方法。其余获取元素的方法和list是一样的,可以正常地使用a[0],a[-1],但不能赋值成另外的元素。
由于tuple不可变,所以代码更安全。假如可能,能用tuple代替list就尽量用tuple。

# tuplea = (1, 2, 3, 1)print("a.count(1), a.count(2), a.count(4)")print(a.count(1), a.count(2), a.count(4))print(a)print("a[0], a[1], a[-2]")print(a[0], a[1], a[-2])print("a.index(3)")print(a.index(3))
FANGQIdeMacBook-Pro:PythonStudy fangqi$ python3 ex17.py a.count(1), a.count(2), a.count(4)2 1 0(1, 2, 3, 1)a[0], a[1], a[-2]1 2 3a.index(3)2

同List相比tuple的区别

  • tuple不可以修改,但可以拼接 使用+操作符
  • tuple不可以删除特定元素,但可以删除整个tuple ,使用del tuple
  • tuple 方法只有index() 和 count()

3. Dict

Python内置了字典:dict的支持,dict全称dictionary,在其余语言中也称为map,使用键-值(key-value)存储,具备极快的查找速度。
举个例子,假设要根据同学的名字查找对应的成绩,假如用list实现,需要两个list:

names = ['Michael', 'Bob', 'Tracy']scores = [95, 75, 85]

给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,list越长,耗时越长。
假如用dict实现,只要要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用Python写一个dict如下:

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}>>> d['Michael']95

为什么dict查找速度这么快?由于dict的实现原理和查字典是一样的。假设字典包含了1万个汉字,我们要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。
第二种方法是先在字典的索引表里(比方部首表)查这个字对应的页码,而后直接翻到该页,找到这个字,无论找哪个字,这种查找速度都非常快,不会随着字典大小的添加而变慢。
dict就是第二种实现方式,给定一个名字,比方'Michael',dict在内部即可以直接计算出Michael对应的存放成绩的“页码”,也就是95这个数字存放的内存地址,直接取出来,所以速度非常快。
你可以猜到,这种key-value存储方式,在放进去的时候,必需根据key算出value的存放位置,这样,取的时候才能根据key直接拿到value。

  • del 操作
a = {'Name': 'xiao7', 'Age': 1, 'Class': 'First'}del a['Name']  # 删除键 'Name'print(a)

Python中dict包含了以下内置函数:

序号函数形容
1len(dict)计算字典元素个数,即键的总数。
2str(dict)输出字典,以可打印的字符串表示。
3type(variable)返回输入的变量类型,假如变量是字典就返回字典类型。

Python中dict包含了以下内置方法:

序号函数及形容
1radiansdict.clear()删除字典内所有元素
2radiansdict.copy()返回一个字典的浅复制
3radiansdict.fromkeys()创立一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4radiansdict.get(key, default=None)返回指定键的值,假如值不在字典中返回default值
5key in dict假如键在字典dict里返回true,否则返回false
6radiansdict.items()以列表返回可遍历的(键, 值) 元组数组
7radiansdict.keys()返回一个迭代器,可以使用 list() 来转换为列表
8radiansdict.setdefault和get()相似, 但假如键不存在于字典中,将会增加键并将值设为default
9radiansdict.update(dict2)把字典dict2的键/值对升级到dict里
10radiansdict.values()返回一个迭代器,可以使用 list() 来转换为列表
11pop(key[,default])删除字典给定键 key 所对应的值,返回值为被删除的值。key值必需给出。 否则,返回default值。
12popitem()随机返回并删除字典中的一对键和值(一般删除末尾对)。

4. Set

集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者者 set() 函数创立集合,注意:创立一个空集合必需用 set() 而不是 { },由于 { } 是用来创立一个空字典。

>>>basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}>>> print(basket)                      # 这里演示的是去重功能{'orange', 'banana', 'pear', 'apple'}>>> 'orange' in basket                 # 快速判断元素能否在集合内True>>> 'crabgrass' in basketFalse >>> # 下面展现两个集合间的运算....>>> a = set('abracadabra')>>> b = set('alacazam')>>> a                                  {'a', 'r', 'b', 'c', 'd'}>>> a - b                              # 集合a中包含而集合b中不包含的元素{'r', 'd', 'b'}>>> a | b                              # 集合a或者b中包含的所有元素{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}>>> a & b                              # 集合a和b中都包含了的元素{'a', 'c'}>>> a ^ b                              # 不同时包含于a和b的元素{'r', 'd', 'b', 'm', 'z', 'l'}

Python中set包含了如下内置函数:

序号函数形容
1add()增加元素s.add("abc")
2update()增加元素s.update(abc)
3remove()移除元素s.remove(abc) 注:假如元素不存在则报错
4discard()移除元素s.discard(abc) 注:假如元素不存在不会报错
5pop()随机删除一个元素,并且返回其值x = s.pop()
6in判断能否存在x in s,若存在返回True,不存在返回False
  • 全部评论(0)
最新发布的资讯信息
【系统环境|服务器应用】树莓派安装TensorFlow(2020-04-24 21:11)
【系统环境|服务器应用】防面试-SD_WebImage(2020-04-24 21:11)
【系统环境|服务器应用】推荐一款视频控件xgplayer(2020-04-24 21:11)
【系统环境|服务器应用】PostgreSQL 源码解读(27)- 查询语句#12(查询优化-上拉子链接#2)(2020-04-24 21:11)
【系统环境|服务器应用】如何轻松学习JavaScript?(2020-04-24 21:10)
【系统环境|服务器应用】【源码剖析】Launcher 8.0 源码 (12) --- Launcher 启动流程 第五步之计算桌面各布局细节参数(2020-04-24 21:10)
【系统环境|服务器应用】前台碰撞室之console.log与文本字符(2020-04-24 21:10)
【系统环境|服务器应用】好用的Middleware实现(2020-04-24 21:10)
【系统环境|服务器应用】前台面试每日 3+1 —— 第373天(2020-04-24 21:10)
【系统环境|服务器应用】绍圣--kafka之生产者(五)(2020-04-24 21:10)
手机二维码手机访问领取大礼包
返回顶部