世界热资讯!如果有10个词,我想从中取3个词,然后把所有的10选3的可能统计记录下来,该怎么做?
回复“书籍”即可获赠Python从入门到进阶共10本电子书
今
日
(相关资料图)
鸡
汤
香雾云鬟湿,清辉玉臂寒。大家好,我是进阶者。
一、前言偶然的一次机会,在隔壁群看到一个粉丝问了一道Python实现排列组合基础问题,拿到Python白银交流群问了一下,下图是他的需求:
很明显是个排列组合的问题,直接计算组合结果:C(10,3)=(10×9×8)/(3×2×1)=720/6 =120,答案是120。
二、实现过程这里【瑜亮老师】直接给了一个代码,如下所示。
fromitertoolsimportcombinationsword=["鲁班七号","鲁班","鲁班大师","甄姬","安琪拉","王昭君","韩信","孙悟空","程咬金","猪八戒"]res=[iforiincombinations(word,3)]print(res)print(len(res))
运行结果如下图所示:
可以看到运行的结果最后得到的也是120,和手动计算的一致。
后来【const GF = null】自己也给了一个代码,如下图所示:
这个方法也不错,不过需要提前把排列组合的顺序算出来才行。
后来【瑜亮老师】补充了一个方法,代码如下所示:
word=["鲁班七号","鲁班","鲁班大师","甄姬","安琪拉","王昭君","韩信","孙悟空","程咬金","猪八戒"]res=[[i,j,k]foriinword[:]forjinword[word.index(i)+1:]forkinword[word.index(j)+1:]]print(res)print(len(res))
运行结果如下图所示:
这个方法是用列表推导式+列表切片+index,也是能实现的,改用range(len)也是一样的意思,其实就是3层循环,具体的层级如下所示:
res=[]foriinword[:]:forjinword[word.index(i)+1:]:forkinword[word.index(j)+1:]:res.append([i,j,k])print(res)
运行结果如下图所示:
总之,完美地解决粉丝的问题啦!
不过话说回来,有现成的模块,直接用就行了,数据量一旦比较大的话,就难顶了,推荐第一种方法!
三、总结大家好,我是进阶者。这篇文章主要盘点了一个Python实现排列组合的问题,文中针对该问题给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。
最后感谢粉丝提问,感谢【瑜亮老师】、【const GF = null】给出的思路和代码解析,感谢粉丝【冯诚】、【此类生物】、【dcpeng】、【千葉ほのお】等人参与学习交流。
大家在学习过程中如果有遇到问题,欢迎随时联系我解决(我的微信:pdcfighting),应粉丝要求,我创建了一些高质量的Python付费学习交流群,欢迎大家加入我的Python学习交流群!
小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。
-------------------End-------------------
往期精彩文章推荐:
playwright网络爬虫实战案例分享
手把手使用 python 删除 windows 下的长路径文件
Python布尔值属于数字类型吗?
Pandas可以直接读取网页html(表格)、json、csv等格式
欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
/今日留言主题/
随便说一两句吧~~
相关阅读
-
世界热推荐:今晚7:00直播丨下一个突破...
今晚19:00,Cocos视频号直播马上点击【预约】啦↓↓↓在运营了三年... -
NFT周刊|Magic Eden宣布支持Polygon网...
Block-986在NFT这样的市场,每周都会有相当多项目起起伏伏。在过去... -
环球今亮点!头条观察 | DeFi的兴衰与...
在比特币得到机构关注之后,许多财务专家预测世界将因为加密货币的... -
重新审视合作,体育Crypto的可靠关系才能双赢
Block-987即使在体育Crypto领域,人们的目光仍然集中在FTX上。随着... -
简讯:前端单元测试,更进一步
前端测试@2022如果从2014年Jest的第一个版本发布开始计算,前端开发... -
焦点热讯:刘强东这波操作秀
近日,刘强东发布京东全员信,信中提到:自2023年1月1日起,逐步为...