Python内置数据结构3

解构

In [8]: lst = [1,2]

In [9]: lst
Out[9]: [1, 2]

In [10]: first,second = lst  #解构

In [11]: print(first,second)
1 2

按照元素顺序,把线性结构的元素赋值给变量

解构的变化

In [21]: lst = list(range(10))

In [22]: lst
Out[22]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [23]: head,*mid,tail = lst

In [24]: head
Out[24]: 0

In [25]: tail
Out[25]: 9

In [26]: mid
Out[26]: [1, 2, 3, 4, 5, 6, 7, 8]

In [27]: head,*_,tail = lst

In [28]: head
Out[28]: 0

In [29]: tail
Out[29]: 9

Python的一个惯例, 使用单个下划线 _ 表示丢弃该变量

封装

In [12]: t = 1,2

In [13]: t
Out[13]: (1, 2)

In [14]: type(t)
Out[14]: tuple

In [15]: t1 = (1,2)

In [16]: t2 = 1,2

In [17]: t1
Out[17]: (1, 2)

In [18]: t2
Out[18]: (1, 2)

封装出来的一定是元祖

集合--没有重复元素

定义及初始化

In [31]: s = set()

In [32]: s
Out[32]: set()

In [33]: s = {1,2,3}

In [34]: s
Out[34]: {1, 2, 3}

In [35]: s = set(range(5))

In [36]: s
Out[36]: {0, 1, 2, 3, 4}

集合的操作

增加

In [37]: s
Out[37]: {0, 1, 2, 3, 4}

In [38]: s.add(9)  #增加单个元素

In [39]: s
Out[39]: {0, 1, 2, 3, 4, 9}

In [40]: s.add(9)  #增加已经存在的元素,什么也不做

In [41]: s
Out[41]: {0, 1, 2, 3, 4, 9}

In [42]: s.update(range(10,15)) #增加多个元素

In [43]: s
Out[43]: {0, 1, 2, 3, 4, 9, 10, 11, 12, 13, 14}

删除

In [44]: s
Out[44]: {0, 1, 2, 3, 4, 9, 10, 11, 12, 13, 14}

In [45]: s.remove(1)

In [46]: s
Out[46]: {0, 2, 3, 4, 9, 10, 11, 12, 13, 14}

In [47]: s.pop()
Out[47]: 0

In [48]: s
Out[48]: {2, 3, 4, 9, 10, 11, 12, 13, 14}

In [49]: s.pop()
Out[49]: 2

In [50]: s.pop()
Out[50]: 3

In [51]: s.pop()
Out[51]: 4

In [52]: s.pop()
Out[52]: 9

In [53]: s.pop()
Out[53]: 10

In [54]: s.pop()
Out[54]: 11

In [55]: s.discard(13)

In [56]: s
Out[56]: {12, 14}
  • remove 删除给定的元素, 元素不存在抛出KeyError
  • discard 删除给定的元素, 元素不存在,什么也不做
  • pop 随机删除一个元素并返回, 集合为空,抛出KeyError
  • clear 清空集合

集合不能修改单个元素,不能通过索引查找,集合没有访问单个元素的方法,集合元素没有顺序,元素必须课hash

集合运算

交集、并集、差集、对分差集

In [57]: s1 = {1,2,3}

In [58]: s2 = {2,3,4}

In [59]: s1.intersection(s2)
Out[59]: {2, 3}

In [60]: s1 & s2
Out[60]: {2, 3}

In [61]: 

In [61]: s1.union(s2)
Out[61]: {1, 2, 3, 4}

In [62]: s1 | s2
Out[62]: {1, 2, 3, 4}

In [63]: 

In [63]: s1.difference(s2)
Out[63]: {1}

In [64]: s1 - s2
Out[64]: {1}

In [65]: 

In [65]: s1.symmetric_difference(s2)
Out[65]: {1, 4}

In [66]: s1 ^ s2
Out[66]: {1, 4}

集合的判断

In [67]: s1 = {1,2,3,4}

In [68]: s2 = {2,3}

In [69]: s2.issubset(s1)
Out[69]: True

In [70]: s1.issuperset(s2)
Out[70]: True

In [71]: 

In [71]: 

In [71]: s1.isdisjoint(s2) # 判断两个集合是否有交集, 如果有交集返回False, 没有交集返回True
Out[71]: False

字典--是一种key-value结构

定义及初始化

In [72]: d = {}

In [73]: d 
Out[73]: {}

In [74]: d = dict{}

In [75]: d = dict()

In [76]: d
Out[76]: {}

In [77]: d = {‘a‘:1,‘b‘:2}

In [78]: d
Out[78]: {‘a‘: 1, ‘b‘: 2}

In [79]: d = dict([(‘a‘, 1), (‘b‘, 2)])

In [80]: d
Out[80]: {‘a‘: 1, ‘b‘: 2}
In [81]: d = dict.fromkeys(range(5),‘ab‘)

In [82]: d
Out[82]: {0: ‘ab‘, 1: ‘ab‘, 2: ‘ab‘, 3: ‘ab‘, 4: ‘ab‘}

增加、修改

In [83]: d
Out[83]: {0: ‘ab‘, 1: ‘ab‘, 2: ‘ab‘, 3: ‘ab‘, 4: ‘ab‘}

In [84]: 

In [84]: d[‘a‘] = 5

In [85]: d
Out[85]: {0: ‘ab‘, 1: ‘ab‘, 2: ‘ab‘, 3: ‘ab‘, 4: ‘ab‘, ‘a‘: 5}

In [86]: d.update([(‘b‘,5),(‘c‘,6)])

In [87]: d
Out[87]: {0: ‘ab‘, 1: ‘ab‘, 2: ‘ab‘, 3: ‘ab‘, 4: ‘ab‘, ‘a‘: 5, ‘b‘: 5, ‘c‘: 6}

In [88]: d.update({‘d‘:2,‘r‘:6})

In [89]: d
Out[89]: 
{0: ‘ab‘,
 1: ‘ab‘,
 2: ‘ab‘,
 3: ‘ab‘,
 4: ‘ab‘,
 ‘a‘: 5,
 ‘d‘: 2,
 ‘b‘: 5,
 ‘c‘: 6,
 ‘r‘: 6}

删除

In [91]: d.pop(0)
Out[91]: ‘ab‘

In [92]: d
Out[92]: {1: ‘ab‘, 2: ‘ab‘, 3: ‘ab‘, 4: ‘ab‘, ‘a‘: 5, ‘d‘: 2, ‘b‘: 5, ‘c‘: 6, ‘r‘: 6}

In [93]: d.popitem()  #随机删除
Out[93]: (1, ‘ab‘)

字典的遍历

In [100]: d
Out[100]: {‘b‘: 5, ‘c‘: 6, ‘r‘: 6}

In [101]: for x in d:
     ...:     print(x)
     ...:     
b
c
r

In [102]: d.keys()
Out[102]: dict_keys([‘b‘, ‘c‘, ‘r‘])

In [103]: d.values()
Out[103]: dict_values([5, 6, 6])

In [104]: d.items()
Out[104]: dict_items([(‘b‘, 5), (‘c‘, 6), (‘r‘, 6)])

In [105]: for v in d.values():
     ...:     print(v)
     ...:     
5
6
6

In [106]: for x in d.items():
     ...:     print(x)
     ...:     
(‘b‘, 5)
(‘c‘, 6)
(‘r‘, 6)

In [107]: for k,v in d.items():
     ...:     print(k,v)
     ...:     
b 5
c 6
r 6

字典的key不可重复,需要可hash

时间: 2024-12-26 18:45:33

Python内置数据结构3的相关文章

Python内置数据结构——列表list,元组tuple

内置数据结构分类: 数值型 int , float , complex , bool 序列对象 字符串 str 列表 list tuple(元组) 键值对 集合 set 字典 dict 数字型 int ,float , complex , bool都是class, 1,5.0 , 2+3j都是对象的实例 int : python3的int就是长整型,没有大小限制,受限于内存大小 float:有整数部分和小数部分组成,支持十进制和科学计数法表示,只有双精度型 complex:有实数和虚部组成,实部

Python内置数据结构

内置数据结构 可变 list 列表 byterray dict 字典 set 集合 不可变 tuple 元组 bytes 常量(int,str,bool 等) list 列表 (推荐使用索引)列表相当于一个排列整齐的队列,可以理解为在内存中是一片排列整齐的连续的空间,它是可索引,可变的,有序的,线性结构,可迭代.优点:通过索引(index)查找.替换元素 效率高 时间复杂度O(1).尾部追加(append)与 尾部移除(pop)元素快 效率高 时间复杂度O(1).缺点:从中间增加或移除元素会使列

Python内置数据结构操作VS sqlite3操作

1.摘要 在同一数据库中查询某值,内置数据结构的查询速度快还是数据库sqlite3的查询速度快?针对这一问题,通过构建一个包含2500个随机数的列表,并将其插入sqlite3数据库中,利用timeit模块,分别对内置数据结构list和sqlite3查询某一值在不在数据组中进行对比. 2.代码 >>> import numpy as np >>> import sqlite3 >>> test=np.random.randn(2500) >>

【Python】07、python内置数据结构之字符串及bytes

一.字符串 1.定义和初始化 In [4]: s = "hello python" In [4]: s = "hello python" In [5]: s Out[5]: 'hello python' In [6]: s = 'hello python' In [7]: s Out[7]: 'hello python' In [8]: s = '''hello python''' In [9]: s Out[9]: 'hello python' In [10]: 

python内置数据结构 - list

目录: 分类 数字的处理函数 类型判断 list 练习题 一. 分类 1). 数值型:int(整型), float(浮点型), complex(复数), bool (布尔型) 2). 序列对象:str (字符串), tuple(元组) 3). 键值对:set(集合), dict(字典) 二. 数字的处理函数 round(), 对浮点数取近似值 In [1]: round(2.675, 2) Out[1]: 2.67 In [2]: round(2.676, 2) Out[2]: 2.68 在机器

chapter . 2.2、Python内置数据结构:字符串、字节和字节数组

字符串 有序的序列,是字符的集合 使用单引号,双引号,三引号引注的字符序列 字符串是不可变对象,我们看到的合并字符串,其实是返回一个由原来两个值复制后返回的值,会占用新的空间. 从python3起,字符串是Unicode类型 s1 = 'string' s2 = '''this's a "string''' s3 = r"hello \n aasdasd"    :r和R表示忽略转义 s4 = R'windows \net' sql = """s

【Python】11、python内置数据结构之字典

一.字典 1.字典的初始化 字典是一种key-value结构 In [160]: d = {} In [161]: type(d) Out[161]: dict In [166]: d = {'a':1, 'b':2} In [167]: d Out[167]: {'a': 1, 'b': 2} In [180]: d = dict({"a":0, "b":1}) In [181]: d Out[181]: {'a': 0, 'b': 1} In [164]: d 

【Python】06、python内置数据结构1

一.数据结构与获取帮助信息 1.数据结构 通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其它的数据结构. python的最基本数据结构是序列 序列中的每个元素被分配一个序号(即元素的位置),也称为索引:索引从0开始编号 2.python中如何获取命令帮助 获取对象支持使用的属性和方法:dir(), 某方法的具体使用帮助:help() 获取可调用对象的文档字串:print(obj.__doc__) In [15]: dir(list) Ou

python内置数据结构之list

列表简单总结 类和实例之间的理解         人类,哺乳类         实例是某一类中的真实个体 时间复杂度         O(1)         O(n)         O(n**2)         随着处理的数据逐渐增加,程序返回结果的时间变化的描述.             O(1)表示无论程序处理的数据如何增加,返回结果的时间是常数             O(n)随着处理数据的数量n的增加,返回结果的时间线性增长n             O(n)随着处理数据的数量n的