双色球所有组合遍历_一日一技:如何用Python遍历多个列表元素的所有组合

本文介绍了如何使用Python编程实现‘谁-什么时候-在哪里-干什么’游戏的所有可能组合。通过导入random库随机选择组合,或者使用itertools.product计算笛卡尔积,避免了嵌套循环的冗余,提高了代码的可读性。示例代码展示了如何运用这些方法生成并打印所有的组合结果。
摘要由CSDN通过智能技术生成

f5232591ca7ea7bb508e34fa4b4f1c8a.png

大家小时候可能玩过“谁”-“什么时候”-“在哪里”-“干什么”的游戏,这个游戏用Python来表述是这样的:

import random

who = ['王小一', '张小二', '李小三', '朱小四']

when = ['早上8点', '下午3点', '凌晨2点']

where = ['在厕所','在卧室', '在姐姐房间里', '在教室里']

do = ['拉屎', '抽烟', '打架']

print(random.choice(who), random.choice(when), random.choice(where), random.choice(do))

运行效果如下图所示:

a2e32218f558e58b9cc9e19b2f6d07ea.png

现在,我想知道这些句子一共有哪些组合,应该怎么办呢?

最常见的写法是嵌套4个for循环:

who = ['王小一', '张小二', '李小三', '朱小四']

when = ['早上8点', '下午3点', '凌晨2点']

where = ['在厕所','在卧室', '在姐姐房间里', '在教室里']

do = ['拉屎', '抽烟', '打架']

for people in who:

for time in when:

for place in where:

for action in do:

print(people, time, place, action)

运行效果如下图所示:

5e81877b0d484b65780dfe541aea7b28.png

这样写虽然可以实现效果,但显然4个for循环使得代码非常难看。

在Python中,对于这种情况,有现成的处理方法,那就是 itertools.product计算可迭代对象的笛卡尔积。

它的使用方法为:

import itertools

who = ['王小一', '张小二', '李小三', '朱小四']

when = ['早上8点', '下午3点', '凌晨2点']

where = ['在厕所','在卧室', '在姐姐房间里', '在教室里']

do = ['拉屎', '抽烟', '打架']

for result in itertools.product(who, when, where, do):

print(''.join(result))

运行效果如下图所示:

682380cd7e5377e23696a483d0fb3774.png

itertools.product可以接收非常无数个可迭代的对象,然后把他们想for循环嵌套一样拼接起来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值