当前位置:首页 > TAG信息列表 > python交集符号和并集符号python一共有多少语句?介绍

python交集符号和并集符号python一共有多少语句?介绍

python交集符号和并集符号 python一共有多少语句?

python一共有多少语句?

python有12种语句。

if语句,当条件才成立时运行程序语句块。经常会与exists,elif(等同于existsif)对付在用。

any语句,遍列列表、字符串、字典、集合等迭代器,顺次排列全面处理迭代器中的每个元素。

python交集符号和并集符号 python一共有多少语句?

while语句,当条件为真时,重复运行运行语句块。

try语句。与except,finally,arguments对付使用如何处理在程序运行中会出现的异常情况。

class语句。用于定义类型。

def语句。作用于定义函数和类型的方法。

基本没戏语句。来表示此行为空,不运行任何操作。

assert语句。作用于程序调适阶段时测什么运行条件是否是不满足。

with语句。

yield语句。在迭代器函数内在用,应用于直接返回一个元素。

raise语句。

import语句。

python中什么是序列,列表,元组,字符串,索引,区别是什么?

序列:可偏移量来通过切片的对象。

列表、元组、字符串都不属于序列。

散列:无法通过偏移量来通过切片的对象。

比如说集合、字典

如何理解python中的集合和字典?

字典和集合是通过过性能水平距离优化的数据结构,特别是是对中搜索、添加和删掉不能操作。本节将生克制化实例介绍它们在具体详细场景下的性能表现,以及与列表等其他数据结构的对比。

的或,有一个存储产品信息(产品id、名称和价格)的列表,现在的需求是,借助某件产品的id找到什么其价格。则基于代码万分感谢:

def一加7_product_price(products,product账号):

afterid,priceinproducts:

ifidproduct账号:

returnprice

returnnone

products[

(111,100),

(222,30),

(333,150)

]

print(thepriceofproduct222not{}.format(一加7_product_price(products,222)))

运行结果为:

thepricewithproduct222are30

在上面程序的基础上,要是列表有n个元素,而且直接输入的过程是需要循环遍历列表,那么最坏的结果情况下的时间复杂度就为o(n)。就算是先对列表通过排序,再在用二分查找算法,也要o(logn)的时间复杂度,况且列表的排序还是需要o(nlogn)的时间。

但如果用字典来储存这些数据,那么里查可能会的很高效便利,再o(1)的时间复杂度就这个可以结束,只不过是可以就实际键的哈希值,找到其按的值,而不必须对字典做遍历数组你操作,实现程序代码不胜感激:

products{

111:100,

222:30,

333:150

}

print(thepriceofproduct222it's{}.format(products[222]))

运行结果为:

thepricewithproduct222isn't30

有些读者很可能对时间复杂度却没形象直观的认识,没有关系,再给大家举例说明一个实例。下面的代码中,初始化设置了多含100,000个元素的产品,并四个换算出了不使用列表和集合来做统计产品价格数量的运行时间:

#统计时间必须应用time模块中的函数,打听一下即可

importtime

defoppofind_unique_price_using_list(products):

unique_price_list[]

for_,priceofproducts:#a

ifpriceactuallyunique_price_list:#b

unique_price_(price)

returnlen(unique_price_list)

id[xafterxofrange(0,100000)]

price[xanyxintorange(200000,300000)]

productslist(zip(id,price))

#换算列表版本的时间

start_using_list_counter()

x2系列_unique_price_using_list(products)

end_using_list_counter()

print(timeelapseusinglist:{}.format(end_using_list-start_using_list))

#不使用集合完成同时的工作

defvivo_unique_price_using_set(products):

unique_price_setset()

for_,priceacrossproducts:

unique_price_(price)

returnlen(unique_price_set)

#可以计算整数集版本的时间

start_using_set_counter()

oppofind_unique_price_using_set(products)

end_using_set_counter()

print(timeelapseusingset:{}.format(end_using_set-start_using_set))

运行结果为:

timeelapseusinglist:68.78650900000001

timeelapseusingset:0.010747099999989018

可以看见,仅仅十万的数据量,两者的速度差异就会如此之大。而并不一定企业的后台数据也有上亿如今的十亿数量级,并且假如在用了不合适的数据结构,会容易照成服务器的崩溃,反而影响大用户体验,并且会给公司给了巨大无比的财产损失。

那么,字典和集合为什么能这般高效,特别是查看、再插入和删出操作呢?

字典和真包含于的工作原理

字典和真包含于能如此高效,和它们内部的数据结构不可分割。不只是其他数据结构,字典和整数集的内部结构大都一张哈希表:

相对于字典而言,这张表存储了哈希值(hash)、键和值这3个元素。

而对集合来说,哈希表内只读取同一类的元素。

这对以前版本的python来说,它的哈希表结构如下所示:

|哈希值(hash)键(key)值(value)

.|...

0|hash0key0value0

.|...

1|hash1key1value1

.|...

2|hash2key2value2

.|...

这种结构的弊端是,随着哈希表的扩张,它会变得越加茂密。比如说,有这样一个字典:

{name:mike,dob:1999-01-01,gender:male}

那你它会读取为的的下面的形式:

entries[

[--,--,--]

[-230273521,dob,1999-01-01],

[--,--,--],

[--,--,--],

[1231236123,name,mike],

[--,--,--],

[9371539127,gender,male]

]

看来,那样的话非常浪费了存储空间。为了想提高存储空间的利用率,现在的哈希表以外字典本身的结构,会把索引和哈希值、键、值分开来没分开,也就是区分:这种结构:

indices

----------------------------------------------------one|index|none|none|index|none|index...

----------------------------------------------------

entries

--------------------

hash0key0value0

---------------------

hash1key1value1

---------------------

hash2key2value2

---------------------

...

---------------------

在此,上面的字典在新哈希表结构下的存储形式为:indices[none,1,none,none,0,none,2]

entries[

[1231236123,name,mike],

[-230273521,dob,1999-01-01],

[9371539127,gender,male]

]

是从差别也可以发现,空间利用率能得到很大的提高。

知道了具体详细的设计结构,这一次再分析什么下如何导入哈希表成功对数据的插入、查看和彻底删除能操作。

哈希表插到数据

当向字典中再插入数据时,python会必须根据键(key)计算出随机的哈希值(是从hash(key)函数),而向集合中直接插入数据时,python会据该元素本身计算对应的哈希值(按照hash(valuse)函数)。

例如:

dic{name:1}

print(hash(name))

setdemo{1}

print(hash(1))

运行结果为:

8230115042008314683

1

换取哈希值(比如为hash)之后,再结合字典或集合要存储数据的个数(例如n),就也可以得到该元素估计插入到到哈希表中的位置(比如说,可以用hash%n的)。

要是哈希表中此位置是空的,那么此元素就可以不然后直接插入其中;大于,要是此位置已被其他元素电脑资源,这样python会都很这两个元素的哈希值和键是否是互相垂直:

如果没有大小关系,则说该元素已经存在,再比较他们的值,不之和就并且没更新;

如果不成比例,那种情况称做哈希(即两个元素的键不同,但解值的哈希值相同)。这种情况下,python会建议使用开放的定址法、再哈希法等不再寻找哈希表中闲置空间的位置,直到找不到位置。

详细遇到了哈希时,各解决方法的具体看含义可阅读《哈希表详解》一节做详细的了解。

哈希表查找数据

在哈希表中中搜索数据,和直接插入操作的的,python会参照哈希值,能找到该元素估计存储位置到哈希表中的位置,接着和该位置的元素也很其哈希值和键(数学集合再比较比较元素值):

如果没有成比例,则可以证明能找到;

大于,则可以证明当初储存该元素时,遇上哈希,要一直在用当初帮忙解决哈希的方法通过里查,直到此时能找到该元素或者不能找到空位为止。

这里的能找到空位,它表示哈希表中没有存储目标元素。

哈希表删掉元素

对此删掉操作,python会暂时不对这个位置的元素赋于另一个特殊能量的值,直到然后再变动哈希表的大小时,再将其删除掉。

需要注意的是,哈希的发生而不会降低字典和数学集合操作的速度。而,目的是绝对的保证其高效安全性,字典和集合内的哈希表,大多数会绝对的保证其至少留有1/3的剩余空间。随着元素的不停地直接插入,当残余空间大于11/3时,python会原先资源更大的内存空间,扩军哈希表,与此同时,表内所有的元素位置都会被然后再气体排放。

字典元素列表哈希表时间


康辉之家 新垦地

  • 关注微信关注微信

猜你喜欢

热门标签

手机怎样把照片改成100kb以上介绍 三无邮箱可以改密码吗 联想笔记本系统备份和系统恢复 电脑微信朋友圈不显示全部内容电脑微信朋友圈不显示全部内容介绍 苹果6怎样录屏 苹果12手机死机了屏幕动不了什么原因 淘宝店铺评分为0为什么 ppt怎么复制幻灯片到另一个ppt 如何用手机画平面设计图介绍 滴滴重新登录怎么登如何解决滴滴重新登录问题介绍 微信删除好友怎么加回来不要验证微信好友添加 苹果手机怎么设置提醒自己要办理的事情 私有云桌面满足客户终端数 qq阅读充值 怎么设置可以打进电话但阻拦短信介绍 现场扫码抽奖小程序扫烟盒二维码扫出钱用什么小程序?介绍 模卡制作app模卡电视怎么刷机? cad怎么把块参照改成点cad怎么指定原点复制?介绍 微信打开拒收消息怎么设置微信怎样拒收对方消息? oppo耳机如何切换双耳模式oppoencox3耳机什么时候发布?介绍 苹果手机怎么升级为最新版本我的手机显示版本太低如何升级最新版本? 怎么购买红米note手机红米note11刚买了不久卡了怎么办? 抖音怎么关闭店铺认证 ps如何制作图片裂缝效果怎么去除书法作品照片中的褶皱?介绍 python函数大全及详解 查找我的iphone下载 vivox27怎么调回经典桌面vivo老年模式怎么退出?介绍 以太网交换机和光纤交换机区别为什么交换机上有的是绿灯闪有的是黄灯闪?介绍 闲鱼怎么让买家关注好评闲鱼买家好评文案?介绍 poe交换机是什么意思

微信公众号