范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

python自带性能强悍的标准库itertools

  可迭代对象就像密闭容器里的水,有货倒不出
  itertools是python内置的标准模块,提供了很多简洁又高效的专用功能,使用得当能够极大的简化代码行数,同时所有方法都是实现了生成器函数,这就意味着极大的节省内存。
  itertools提供的功能主要分为三大块,以最新版本的3.10为例:  对可迭代对象无限迭代,无限输出  对可迭代对象有限迭代  对可迭代对象排列组合
  方法如下:
  导入包  >>> from iteratortools import *无限迭代
  iteratortools.count(start=0, step=1)
  数值生成器,可以指定起始位置和步长,并且步长可以为浮点数。无限输出,一直累加,在例子中需要边睡眠1s边输出。  >>> import time >>> iterator = count(4, 0.5) >>> for i in iterator: ...     print(i) ...     time.sleep(1) ... 4 4.5 5.0 5.5 6.0 6.5 7.0 7.5
  iteratortools.cycle(iteratorable)
  无限循环取出可迭代对象里的元素 >>> a = cycle("ABCD") >>> import time >>> for i in a: ...     print(i) ...     time.sleep(1) ... A B C D A B C D
  iteratortools.repeat(object[, times])
  不断重复输出整个object,如果指定了重复次数,则输出指定次数,否则将无限重复。 >>> iterator = repeat("hello world", 10) >>> >>> for i in iterator: ...     print(i) ... hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world 有了这个神器,对输出10次hello world这种问题又有一种新解法有限迭代
  iteratortools.accumulate(iteratorable[, func, *, initial=None])
  返回对列表中元素逐项的操作,操作有: 累加,返回累加到每一项的列表  累乘,返回累乘到每一项的列表  最小值,返回到当前项的最小值  最大值,返回到当前项的最大值  >>> [2, 4, 8, 1, 3, 5] [2, 4, 8, 1, 3, 5] >>> arr = [2, 4, 8, 1, 3, 5] >>> >>> add = accumulate(arr) >>> >>> list(add) [2, 6, 14, 15, 18, 23] >>> >>> max = accumulate(arr, max) >>> list(max) [2, 4, 8, 8, 8, 8] >>> >>> import operator >>> mul = accumulate(arr, operator.mul) >>> list(mul) [2, 8, 64, 64, 192, 960] >>> >>> min = accumulate(arr, min) >>> list(min) [2, 2, 2, 1, 1, 1]
  iteratortools.chain(*iteratorables)
  将多个可迭代对象构建成一个新的可迭代对象,统一返回。类似于将多个对象链成一条串 >>> iterator = chain([1,2,3],["a","b","c"],(5,6,7)) >>> list(iterator) [1, 2, 3, "a", "b", "c", 5, 6, 7]
  优点:可以将多个可迭代对象整合成一个,避免逐个取值
  chain.from_iteratorable(iteratorable)
  将一个迭代对象中将所有元素类似于chain一样,统一返回。 >>> chain.from_iteratorable(["abc","def"])  >>> iterator = chain.from_iteratorable(["abc","def"]) >>> list(iterator) ["a", "b", "c", "d", "e", "f"]
  iteratortools.compress(data, selectors)
  按照真值表筛选元素 >>> arr = [1,2,3,4] >>> selectors = [1,0,1,0] >>> >>> iterator = compress(arr, selectors) >>> >>> list(iterator) [1, 3]
  iteratortools.dropwhile(predicate, iteratorable)
  按照条件筛选,丢弃掉第一次不符合条件时之前的所有元素 >>> arr = [1,2,3,2,1,2,1] >>> iterator = dropwhile(lambda x: x<3, arr) >>> list(iterator) [3, 2, 1, 2, 1]
  iteratortools.takewhile(predicate, iteratorable)
  根据predicate条件筛选可迭代对象中的元素,只要元素为真就返回,第一次遇到不符合的条件就退出。
  按照条件筛选,丢弃第一次遇到不符合条件之后的元素。行为类似于上一个dropwhile,区别在于丢弃的选择不同。
  iteratortools.filterfalse(predicate, iteratorable)
  保留不符合条件的元素,返回迭代器 >>> arr = [1,2,3,4,5] >>> iterator = filterfalse(lambda x:x<3, arr) >>> list(iterator) [3, 4, 5]
  iteratortools.groupby(iteratorable, key=None)
  按照指定的条件分类。输出条件和符合条件的元素 >>> iterator = groupby(arr, lambda x: x>3) >>> for condition ,numbers in iterator: ...     print(condition, list(numbers)) ... False [1, 2, 3] True [4, 5]
  iteratortools.islice(iteratorable, start, stop[, step])
  对迭代器进行切片,老版本中不能指定start和stop以及步长,新版本可以。 >>> iterator = count() >>> slice_iterator = islice(iterator, 10, 20, 2) >>> list(slice_iterator) [10, 12, 14, 16, 18]
  iteratortools.starmap(function, iteratorable)
  将function作用于可迭代对象上,类似于map函数
  iteratortools.tee(iteratorable, n=2)
  从一个可迭代对象中返回 n 个独立的迭代器 >>> iterator = tee(arr) >>> for i in iterator: ...     print(type(i), list(i)) ...  [1, 2, 3, 4, 5]  [1, 2, 3, 4, 5]
  iteratortools.zip_longest(*iteratorables, fillvalue=None)
  创建一个迭代器,从每个可迭代对象中收集元素。如果可迭代对象的长度未对齐,将根据 fillvalue 填充缺失值。
  迭代持续到耗光最长的可迭代对象。大致相当于: >>> iterator = zip_longest("ABCD", "xy", fillvalue="-") >>> list(iterator) [("A", "x"), ("B", "y"), ("C", "-"), ("D", "-")]排列组合迭代
  iteratortools.product(*iteratorables, repeat=1)
  生成多个可迭代对象的笛卡尔积
  大致相当于生成器表达式中的嵌套循环。例如, product(A, B) 和 ((x,y) for x in A for y in B) 返回结果一样。 >>> iterator = product("123", "abc") >>> list(iterator) [("1", "a"), ("1", "b"), ("1", "c"), ("2", "a"), ("2", "b"), ("2", "c"), ("3", "a"), ("3", "b"), ("3", "c")]
  将可选参数 repeat 设定为要重复的次数。例如,product(A, repeat=4) 和 product(A, A, A, A) 是一样的
  iteratortools.permutations(iteratorable, r=None)
  由 iteratorable 元素生成长度为 r 的排列。元素的排列,类似于给一个[1,2,3],选取其中两个元素,一共有多少种组合方法?不要求元素排列之后的位置。 >>> iter = permutations([1,2,3], r=3) >>> list(iterator) [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
  这个方法能够完美解决算法中的全排列问题,简直是量身定做。如果早知道这么简单,当年考算法也不会…,哎
  可参见leetcode46题: https://leetcode-cn.com/problems/permutations/
  iteratortools.combinations(iteratorable, r)
  返回由输入 iteratorable 中元素组成长度为 r 的子序列。元素不可重复使用。子序列是要求元素在排列之后和之前的相对位置不变的。1,2,3中3在1的后面,子序列中3也一定在1的后面。 >>> iterator = combinations([1,2,3,4], r = 3) >>> list(iterator) [(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)] >>> iterator = combinations([1], r = 3) >>> list(iterator) []
  这个方法可以曲线解决组合总数问题
  https://leetcode-cn.com/problems/combination-sum/
  iteratortools.combinations_with_replacement(iteratorable, r)
  返回由输入 iteratorable 中元素组成的长度为 r 的子序列,允许每个元素可重复出现 >>> iter = combinations_with_replacement([1,2,3,4], r=2) >>> list(iter) [(1, 1), (1, 2), (1, 3), (1, 4), (2, 2), (2, 3), (2, 4), (3, 3), (3, 4), (4, 4)]  >>> iterator = combinations_with_replacement([1], r=3) >>> list(iterator) [(1, 1, 1)]
  原文    http://www.cnblogs.com/goldsunshine/p/15678828.html

三部门到2022年末IPv6活跃用户数达到7亿人民网北京4月25日电(记者申佳平)据网信中国公众号消息,日前,中央网信办国家发展改革委工业和信息化部联合印发深入推进IPv6规模部署和应用2022年工作安排(以下简称工作安排),VUE使用store全局websocket长连接exportdefaultnamespacedtrue,statewebsocknull,url,lockReconnectfalse,是否真正建立连接timeout251000,JavaScript开发工具WebStorm使用教程从命令行打开文件从命令行打开WebStorm中的任意文件或文件夹,可选择指定打开后插入符号的位置。WebStorm官方最新版免费下载试用,历史版本下载,在线文档和帮助文件下载慧都网Windows可苹果曾说过一句著名言论你的下一台电脑,何必是电脑?是ipad一句话点明主旨,今天的PC端已经成为一个夕阳红产业,越来越多的人不需要强硬的CPU与GPU,就连游戏主旨也转移到手游,于是各大厂商更希望把用户的全部都攥紧到自己手中,手机验证就此诞四月最新CameraRaw14。3独立安装包!支持佳能R5C,支持WINMAC兴高采烈的入手了最新款的相机,结果发现PS无法读取新相机的照片?这是因为CameraRaw转档工具版本低了,不支持新相机的照片!必须升级你的ACR滤镜版本才行!4月CameraRa海信发布全球首款120英寸激光电视,售价119999元4月25日,海信视像除推出55英寸至100英寸的主流大屏电视产品外,进一步向上扩展了电视大屏的尺寸,推出110吋120吋全色激光电视,重新定义巨幕视听体验上限。110吋激光电视为全佳能半画幅241。4281。4和351。4镜头专利,是RF卡口吗佳能获得了一项用于减少像差的高速对焦技术的专利,其中包括用于APSC的大直径广角标准镜头组的示例。专利公开号P2019090990发明名称光学系统和具有它的成像装置摄像装置中使用的康佳与锤子OS联手重新定义电视,APHAEAA6Pro横空出世电视曾经是人们家中不可缺少的大件儿之一,但如今电视却在越来越多的家庭成为了客厅C位上的摆设。人们越来越不爱看电视了是如今常被提及的谈资。康佳与锤子OS重新定义电视,破解行业瓶颈看电我的天!这款摄像机真神奇,有人才抓拍无人就休眠是什么一款监控摄像机让众人为之倾倒,大呼不可思议。对于真正刚需的监控摄像机购买者而言,找到一款合适的功能齐全的家用监控是非常不容易的。尤其是在不接电免布线超长待机的前提之下,想要在手机充电到100再拔?错!这些充电习惯会加快电池报废速度如何正确地给手机充电呢1。一有机会就充电给手机充电的最好方式是一有机会就充电,每次充一点电。哪怕只是几分钟也行,零星时间充电不会损害电池。手机充电的正确步骤要先把插头插入插座,再把新能源汽车主要使用的电池是什么电池新能源汽车采用的都是锂电池,因为锂电池的续航里程比较远,充放电的循环次数比较多,寿命比较长。电池的材料是导热硅胶片,这样子的物质是以有机硅胶为主体,通过添加壹些导热材料,混合在一块
蚊子是从哪里来的?美国计划释放24亿只转基因蚊子,有何目的?算一算又快要进入夏天的夏天,除了炎热的天气,以及大家期待的西瓜等东西,还有一个也给人家带来了很多的困扰,那就是蚊子的出现。一到夏天,蚊虫就开始肆虐,这也让很多招蚊虫体质的人非常地害显卡价格现在虚高已经是几倍了老黄现在遭到国外玩家抵抗,国外玩家坚决不买显卡,现在英伟达股价跌得很厉害,以前吃的都要吐出来。还有哪个支柱行业与此相似?十年前我买中等配置的笔记本,双显卡就已经是标配,14年还买过RTX4060性能曝光,价格合适的甜品卡真正回归?英伟达RTX4060显卡正式曝光,该显卡GPU采用台积电5nm工艺制造(根据历史经验能耗比应该能提升不少),该芯片采用NVIDIA的AD104核心,据称CUDA数量将增至7680个森海塞尔推出SportTrueWireless耳机IP54防水防尘,价格129。95美元森海塞尔(Sennheiser)宣布,推出一款名为SportTrueWireless的新款真无线耳机,可以为健身爱好者和运动员带来卓越的音频效果。森海塞尔运动产品经理DavidHo现在的华为手机都是4G网络,价格很贵,还值不值得买?这就要看个人需求了,反正我是卖了苹果13pro换了P50pro的12G版本,因为本人仍用的是4G的联通大王卡,华为比苹果的信号确实要好一些,用苹果的时候开5G确实能显示5G信号,但哥本哈根大学研究晨练vs晚练,哪个更适合你?适量运动可改变机体的代谢状态增强免疫力,让人延年益寿。无论清晨还是傍晚运动,均能起到一定的减脂作用,但对代谢影响各有侧重。近期,丹麦哥本哈根大学的科研团队通过小鼠实验发现,不同时间换手机时,你还在纠结换多大容量的吗?随着时代的发展进步,智能手机已经成为我们生活中必不可少的一部分,其功能也是越来越强大。现在的用户,除了注重一些通用性能以外,手机的运行内存和存储内存也成为大家所关注的焦点。对于很多新能车产业系列连载为什么新能车替代燃油车是不可逆的趋势我们对未来世界的共识或许没有想象中那么多,但是在未来出行这一点上,各大汽车制造商都已经意识到,新能源汽车代替传统燃油车将是大势所趋。本系列文章将尝试用通俗易懂的方式去解释新能车产业抢先停产燃油车比亚迪摁下换道加速键过去5年多以来,尽管中国的乘用汽车产销量呈逐年下降趋势。但新能源汽车却呈现出强劲的逆势增长态势。从2016年的年销51。6万辆到2021年年销331万辆,截至目前,中国新能源渗透率苹果发布地球日环保成绩单iPhone13等包装盒不再外封塑料膜财经网科技4月24日讯,据IT之家消息,苹果在2年前跟地球许下2030年碳中和的承诺,苹果表示,从设计制造,到使用回收,在每一台Apple产品上,都力求减少碳排放。现在公布了两年后关注年轻人需求国产手机品牌聚焦细分赛道当前,中国智能手机市场进入存量时代,手机厂商之间的竞争也变得愈发激烈。在此背景下,各厂商不得不进行市场的细分,其中年轻人便是非常重要的一个群体。实际上,目前大部分手机厂商已经将年轻