jjzjj

itertools

全部标签

python - 在 itertools.products 中命名可迭代的部分

我一直在阅读关于itertools的文章,它似乎是一个非常强大的模块。我对itertools.product()特别感兴趣,它似乎为我提供了可迭代输入的所有组合。但是,我想知道每个输出来自哪个输入迭代器。例如,一个简单的标准示例是:itertools.product([1,2,3],[1,2])如果用户提供了[1,2,3]的输入,[1,2]我不知道他们输入的顺序,所以得到的结果是(1,2)没有太大帮助,因为我不知道他们会走哪条路。是否有某种方式提供输入,例如:itertools.product(foo=[1,2,3],bar=[1,2])然后得到如下输出:output['foo']=1

Python:如何遍历行 block

如何遍历由空行分隔的行block?该文件如下所示:ID:1Name:XFamilyN:YAge:20ID:2Name:HFamilyN:FAge:23ID:3Name:SFamilyN:YAge:13ID:4Name:MFamilyN:ZAge:25我想遍历block并在3列的列表中获取字段Name、Familyname和Age:YX20FH23YS13ZM25 最佳答案 这是另一种方式,使用itertools.groupby.函数groupy遍历文件的行并为每个line调用isa_group_separator(line)。isa

python - 如何找到列表中所有可能的元素序列?

我有一个列表[2,3,4]。如何在列表中找到所有可能的元素序列?所以输出应该是:[2,3,4][2,4,3][3,2,4][3,4,2][4,2,3][4,3,2] 最佳答案 您可以使用itertools.permutations()轻松完成此操作:>>>fromitertoolsimportpermutations>>>list(permutations([2,3,4]))[(2,3,4),(2,4,3),(3,2,4),(3,4,2),(4,2,3),(4,3,2)]如果出于某种原因你需要列表而不是元组:>>>map(list,

python - Python itertools 计数器的当前值是多少

Python(2.7.9)中的itertools.count计数器对于线程安全计数非常方便。我怎样才能获得计数器的当前值?每次您调用next()时,计数器都会递增并返回最后一个值:importitertoolsx=itertools.count()printx.next()#0printx.next()#1printx.next()#2到目前为止,还不错。如果不调用next(),我找不到获取计数器当前值的方法,这会产生增加计数器或使用的不良副作用repr()函数。从上面继续:printrepr(x)#"count(3)"因此您可以解析repr()的输出。有点像current_value

python - itertools 或手写生成器 - 哪个更好?

我有许多Python生成器,我想将它们组合成一个新的生成器。我可以通过使用一堆yield语句的手写生成器轻松地做到这一点。另一方面,itertools模块就是为这样的事情而制作的,对我来说,创建我需要的生成器的pythonic方法似乎是将的各种迭代器连接在一起>itertools模块。然而,在手头的问题中,它很快就会变得相当复杂(生成器需要保持某种状态---例如是否正在处理第一个或后面的项目---,第i个输出进一步取决于在第i个输入项和各种输入列表的条件下,在将它们连接到生成的列表之前必须进行不同的处理。因为可以解决我的问题的标准迭代器的组合是---由于写下源代码的一维性质---几乎不

python - 用元组填充列表

我只是在摆弄(Mendel'sFirstLawofInheritance)的模拟。在我可以让小动物交配和分析结果之前,必须生成种群,即,必须在不拆包的情况下用不同数量的三种不同类型的元组填充列表。在尝试熟悉itertools的同时(我稍后在交配部分需要组合),我想出了以下解决方案:importitertoolsk=2m=3n=4hd=('A','A')#homozygousdominanthet=('A','a')#heterozygoushr=('a','a')#homozygousrecessivefhd=itertools.repeat(hd,k)fhet=itertools.r

python - Python是否具有用于一阶递归关系的迭代递归生成器函数?

是否有内置函数或标准库函数大致等同于defrecur_until(start,step_fu,stop_predicate=lambda_:False):current=startwhilenotstop_predicate(current):yieldcurrentcurrent=step_fu(current)或defrecur_while(start,step_fu,predicate=lambda_:True):current=startwhilepredicate(current):yieldcurrentcurrent=step_fu(current)甚至只是defrecu

python - 使用 itertools 创建选项矩阵

我正在尝试生成一个由True和False值组成的矩阵,它显示给定数量的选择的所有排列。因此,对于5个选择,您将得到以下输出。FFFFFTFFFFTTFFFTTTFF...FTFFF...我一直在考虑使用itertool的排列和组合,但这些排列和组合会影响位置而不是值,这会导致重复。我确信这个问题有一个标准算法,但我正在努力寻找它的名字。 最佳答案 使用itertools.product:itertools.product([False,True],repeat=5)itertools.product([False,True],rep

python - Python 中的嵌套 for 循环

我想做类似的事情forain[0..1]:forbin[0..1]:forcin[0..1]:dosomething但是,我可能有15个不同的变量。有没有更简单的方法,比如fora,b,cin[0..1]:dosomething感谢您的帮助 最佳答案 itertools.product:importitertoolsfora,b,cinitertools.product([0,1],repeat=3):#dosomething 关于python-Python中的嵌套for循环,我们在St

python - Itertools 乘积不重复

fromitertoolsimportproductteams=['india','australia','newzealand']word_and=['and']tmp='%s%s%s'items=[teams,word_and,teams]print(list(tmp%aforainlist(product(*items))))打印:['indiaandindia','indiaandaustralia','indiaandnewzealand','australiaandindia','australiaandaustralia','australiaandnewzealand'