Python itertool,python中itertools的用法
标题:
1)n个人围坐成一圈,从1开始依次报告数字。报K的退出圈子,从下一个人开始重新数。问还剩几号。
2)编写程序模拟博弈过程,初始数n和报出数k随机生成。
应用知识点:
派生:列表派生和生成器派生itertools模块及其cycle()函数和islice()函数内置函数next()访问迭代器对象列表切片操作循环结构方法1:
使用itertools编写
Import tools,random def包书(n,k):it=(i1 for I in range(n))//生成1 ~ n的迭代序列it=itertools . cycle(it)//使用ITER tool模块中的cycle()函数生成循环序列1,…,n,1,…,n,1,…,n,…//内置函数next()访问迭代对象,因为最后会剩下一个,因此,在上面的it序列中,要对range(n-1)中的I访问k * n-1)://删除一个next(it) //islice()函数对迭代对象进行切片,取前n-i-1个数,去掉第K个数it=ITER tools . cycle(ITER tools . I slice(it,n-i-1))返回next(it)//最后迭代对象是同一个重复元素n=random.randint (1,100) k=random.randint (1,100) l=K) print (n= str (n),K= str(K) \ n最后剩下的就是原来的了
有了列表,每次找到第k个元素所在的索引,去掉列表。
import randomdef包书(n,k): List=list(range(1,n 1))index=k-1 while len(List)1:index=(index len(List))% len(List)List . pop(index)index=index k-1返回List[0]n=random.randint(1,00) k=random.randint (1,100) l=包书(n,k) print (n= str (n),k= str(k) \ n剩下的最后一件事就是原始的了
使用列表切片,将第k个元素后面的元素与第k个元素前面的元素一次拼接,从而得到一个移除了第k个元素的列表。
import randomdef包书(N,k):List=[I 1 for I in range(N)]while len(List)1:index=(k len(List)-1)% len(List)List=List[index 1:]List[:index:]return List[0]N=random . randint(1,100) k=random.randint (1,100) l=包书(N,k) print (n= str (n),k= str(k) \ N剩下的最后一项是
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。