python洗牌函数 python模拟洗牌( 二 )


通过内置函数如来使用特殊方法是最好的选择 。这些内置函数不仅会调用这些方法,通常还提供额外的好处 , 对于内置类型来说,它们的速度更快 。
下面,我们通过定义一个简单的二维向量类,再来体会一下 Python 特殊方法的美妙:
使用Vector类,就像使用 Python 内置的数据类型一样简单:
活学活用Python03:群成员随机两人配对今天下午,成长群的群主申总提出 , 群里每个人找一个战友,互帮互助 。一石激起千层浪,群里面积极向上好青年们就开始踊跃自我介绍 , 一个比一个优秀 , 让人羡慕不已 。我正想要参与其中,突然想到我的活学活用系列需要更新了 。没有困难,创造困难也要上 。于是,仔细想一想,可能出现几种情况:
如果用Python来随机配对,能解决上面的问题 。还有一个好处,每个月初,有了新的成员加进来之后,可以重新打乱配对一次,这样每个月都会有一个新的战友配对 , 就可以结交一个新朋友,岂不更好 。
把全体群成员放在一个集合里面,然后随机的从这个集合中挑出两个元素,作为一对战友 , 然后把这俩哥们从集合中删除,剩下的成员组成了新的集合,再对新的集合重复上面的操作,一直到新的集合为空,程序结束
在Python中可以用list或者set来实现
set和list的区别如下:
set是无序的 , 不可重复的
list是有序的,可以重复的
直觉上set比较适合,于是查看set的文档,看有没有适合的操作函数 。发现set的操作函数有5个:
其中pop()从集合中删除并返回随机的一个元素,好像很符合我的要求,于是动手尝试 。
输入的结果如下:
成功了O(∩_∩)O哈哈~
PS:因为可能存在成员数为单数的情况,为了不使程序出错,这里添加了一个try-except
上面是用set实现的 , 那用list能实现吗?
答案是:可以
查看Python文档,发现一个函数非常适合:random.shuffle,这个家伙能把一个list中的成员洗牌打乱,那么我们就可以按照顺序把大乱以后的list中的成员打印出来,挨着的两个成员就成为战友 。实现如下:
输入的结果如下:
成功,而且不会因为单数问题报错,实现起来也比set简单,更重要的一点是程序运行后生成了一个雷暴members保存了所有的战友匹配信息 。方便保存 。
这里有个知识点是list的切片,list[i:j]返回的是一个小list,是原来list的第i个元素到第j个元素 。
如果要应用到群成员配对,只需要把members的内容替换成为愿意程序配对的群成员们就可以啦
set创建和pop()函数
list创建 , list切片
random.shuffle(list)给list洗牌
【python洗牌函数 python模拟洗牌】python洗牌函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python模拟洗牌、python洗牌函数的信息别忘了在本站进行查找喔 。

推荐阅读