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

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

酋长杯0塞维利亚直播吧7月30日讯北京时间7月30日晚上1930,阿森纳与塞维利亚进行酋长杯比赛。上半场,萨卡造点并主罚命中,热苏斯3分钟内梅开二度,布努送礼萨卡笑纳。半场战罢,阿森纳暂40塞维利热身赛1不敌马竞北京时间7月30日19点45分,曼联热身赛之行在挪威奥斯陆迎来一场重头戏,对手是马德里竞技,后者上赛季在欧冠淘汰了红魔,本场热身赛场面也比较火爆。上半场比赛,曼联一开场攻势就很凶猛张常宁婚礼收获颇丰,四大国手集体亮相,郎平未到场还有1遗憾张常宁婚礼后面临职业道路问题!在领证了4年之后,中国体坛的神仙眷侣女排运动员张常宁与篮球运动员吴冠希的婚礼经过再三推迟,终于在7月30号如期举行。作为中国体育圈的盛事,众多名体坛明负债70亿,宣布破产!第一个死在新能源大潮下的中国车企,出现了提起东风裕隆这个车企,许多人也许感到陌生,但它旗下的纳智捷还算有些知名度。在贡献了百公里6箱油买纳智捷要配个加油站等段子之后,这家车企终于走向真正的衰败。不久前公司宣布破产重组,即M2MacBookAir评测Air变了新款M2MacBookAir变了,与之前的机型完全不同,它拥有完全平坦的设计,屏幕也变大了。屏幕技术扬声器芯片组网络摄像头和键盘也有重要升级。M2MacBookAir评测开始外观设常见的智能家居产品有哪些万物互联万物互通是当下流行的一种热词,也是人们对于未来智能化生活的一种美好想象。现在随着科技的发展,越来越来越多的智能产品步入到我们的生活中为我们提供了便利,而智能家居就是其中的佼从摄像头的外观设计,看智能手机影像发展的小趋势随着时代的发展,影像系统已经成为当下智能手机的核心竞争力,如果细心观察的话,大家只从外形观察就可以发现智能手机的许多小秘密。摄像模组的顶部C位从未改变2022手机发布大赏下半场中,索尼为iPhone用户推出PS定制版BackboneOne游戏手柄日前,索尼联合游戏手柄厂商Backbone,为iPhone用户推出了一款PS定制版BackboneOne游戏手柄它采用了PS5DualSense无线控制器的外观设计,预计将在北美洲白娘子赵雅芝近照曝光,穿高跟鞋跑步,妆容精致皮肤白到发光近日,不老女神赵雅芝在某社交平台上发布了一段她与工作人员一同晨跑的视频,视频中的赵雅芝脚踩厚底高跟鞋跑得飞快为众人领跑,一边跑还边喊口号,少女感十足。视频中我们可以看到赵雅芝身穿白摩托罗拉全新折叠屏影像配置曝光后置5000万像素防抖主摄随着行业供应链技术日趋成熟,近些年各大品牌折叠屏手机的更新频率似乎变快了不少,特别是进入2022年以来,我们看到了有像荣耀和vivo等品牌,相继推出了自家的首款折叠屏产品,并且收获华为镜头设计专利公布近日,华为一项专利被公布。专利摘要显示,这是一种光学镜头重像模组及移动平台。光学境头包括沿着光轴由物侧宝像侧排列的氧一通境第二适镜第三遇镜第四透镜第五透镜第六透镜和第七透镜其中,第
9583!雨露均沾攻防一体,北控大胜深圳廖三宁功不可没文水清清10181,北控胜深圳。整体实力而言,北控不占优势,却能够以20分优势大胜,张帆26分强势爆发背后,廖三宁贡献9分5篮板8助攻3抢断,兑现马布里期望的三大作用功不可没,具体文案清晨的粥,能填满胃,深夜的酒,却能填满心1。hr我干净坦诚且仅一份的爱意已经开过花了,错的时候也是拔根起了,至于以后如何栽种,不想了。2。hr清晨的粥,能填满胃,深夜的酒,却能填满心。3。hr所有的久别,都是为了重逢,我东阳光官宣签约美国外援威尔哲身披33号战袍曾效力火箭北京时间10月17日,浙江东阳光男篮官方宣布,签约美国外援凯尔威尔哲,他将身披33号战袍,为球队出战接下来的CBA联赛。威尔哲出生于1992年10月20日,现年29周岁,他的身高2雷布斯的互联网七字真经互联网的七字诀(1)专注,在任何时候任何商业实体的资源都是有限的,将有限的资源投入到足够聚焦的业务线中,才有可能形成最大化的竞争力,拿出足够好的产品与服务,就如MIUI的四个核心功陕西唯一!教育部公布又一重磅名单,西电新增1个硬核研究中心近日,教育部公布了新一批教育部工程研究中心建设项目立项名单,西安电子科技大学牵头申报的区块链技术应用与评测教育部工程研究中心获批立项建设,成为学校第4个获批建设的教育部工程研究中心vivoXFold体验当下最成熟的折叠屏?视频加载中记者王公逸折叠屏发展至今,大致有两种产品思路。其一是做小做轻,换取便携的手感,其二则是在各方面拉满配置,追求展开和折叠的体验统一,vivo的XFold正是后者。从折叠屏的卖家掀起大规模仲裁,一万人就启动?TikTok重燃电商进军北美大规模仲裁行动开始?近日,小编注意到关于卖家仲裁相关事件又有新动态。在跨境风风火火之际,落下封号的棒槌,一度让不少卖家难以缓过神来。而此事还是双重打击,封号事件以及PayPal的冻马云花天价带领6亿用户种树,6年过去了,沙漠如今咋样了?众所周知,中国不仅仅是世界第二大经济大国,同时陆地领土面积也是全球第三位。随着科技经济不断发展,现如今人们的生活也不断富裕,但城市发展的同时有一个问题正在出现,那就是资源被不断破坏央行定调,鼓励全国各地城市,学习深圳模式深圳这座城市有着不一样的魔力,在短短40年时间里从默默无闻的小渔村,如今走向了国际化大都市,也让世界见证了中国经济发展的缩影,也让世界看到了对外改革开放对经济带来的效益。10月13NBA常规赛官方直播湖人vs勇士(直播中文)全程高清观看詹姆斯怀斯曼有一个令人印象深刻的季前赛。在五场季前赛中,怀斯曼场均得到14。8分6。2个篮板和1。4次助攻,投篮命中率为67。在今天对阵湖人的比赛中,凯文鲁尼依然会是勇士队的首发中郎平前夫白帆离婚后独自照顾女儿15年未娶,熬到60岁老来得子感情真的是一个变化莫测的事情,还记得当年的郎平和前夫感情十分的深厚,但如今也分道扬镳,各自开始了新的生活。据媒体爆料,60岁的郎平前夫白帆老来得子,生活格外的幸福。要自从白帆自从和