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

简介: 一日一技:如何用Python遍历多个列表元素的所有组合

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

import random
who = ['王小一', '张小二', '李小三', '朱小四']
when = ['早上8点', '下午3点', '凌晨2点']
where = ['在厕所','在卧室', '在姐姐房间里', '在教室里']
do = ['拉屎', '抽烟', '打架']
print(random.choice(who), random.choice(when), random.choice(where), random.choice(do))

运行效果如下图所示:

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

最常见的写法是嵌套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)

运行效果如下图所示:

这样写虽然可以实现效果,但显然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))

运行效果如下图所示:

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


目录
相关文章
|
6天前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
22 14
|
8天前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
23 10
|
25天前
|
数据处理 开发者 Python
Python中的列表推导式:简洁高效的数据处理
在编程世界中,效率和可读性是代码的两大支柱。Python语言以其独特的简洁性和强大的表达力,为开发者提供了众多优雅的解决方案,其中列表推导式便是一个闪耀的例子。本文将深入探讨列表推导式的使用场景、语法结构及其背后的执行逻辑,带你领略这一特性的魅力所在。
|
28天前
|
开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第41天】 在编程的世界中,效率与简洁是永恒的追求。本文将深入探讨Python编程语言中一个独特且强大的特性——列表推导式(List Comprehension)。我们将通过实际代码示例,展示如何利用这一工具简化代码、提升性能,并解决常见编程问题。无论你是初学者还是资深开发者,掌握列表推导式都将使你的Python之旅更加顺畅。
|
1月前
|
Python
探索Python中的列表推导式
【10月更文挑战第38天】本文深入探讨了Python中强大而简洁的编程工具——列表推导式。从基础使用到高级技巧,我们将一步步揭示如何利用这个特性来简化代码、提高效率。你将了解到,列表推导式不仅仅是编码的快捷方式,它还能帮助我们以更加Pythonic的方式思考问题。准备好让你的Python代码变得更加优雅和高效了吗?让我们开始吧!
|
1月前
|
算法 定位技术 Python
震惊!Python 图结构竟然可以这样玩?DFS&BFS 遍历技巧大公开
在 Python 编程中,图是一种重要的数据结构,而深度优先搜索(DFS)和广度优先搜索(BFS)是遍历图的两种关键算法。本文将通过定义图的数据结构、实现 DFS 和 BFS 算法,并通过具体示例展示其应用,帮助读者深入理解这两种算法。DFS 适用于寻找路径和检查图连通性,而 BFS 适用于寻找最短路径。掌握这些技巧,可以更高效地解决与图相关的复杂问题。
27 2
|
1月前
|
Python
不容错过!Python中图的精妙表示与高效遍历策略,提升你的编程艺术感
本文介绍了Python中图的表示方法及遍历策略。图可通过邻接表或邻接矩阵表示,前者节省空间适合稀疏图,后者便于检查连接但占用更多空间。文章详细展示了邻接表和邻接矩阵的实现,并讲解了深度优先搜索(DFS)和广度优先搜索(BFS)的遍历方法,帮助读者掌握图的基本操作和应用技巧。
36 4
|
26天前
|
JavaScript 前端开发 算法
python中的列表生成式和生成器
欢迎来到瑞雨溪的博客,这里是一位热爱JavaScript和Vue的大一学生的天地。通过自学前端技术2年半,现正向全栈开发迈进。如果你从我的文章中受益,欢迎关注,我将持续更新高质量内容,你的支持是我前进的动力!🎉🎉🎉
22 0
|
6月前
|
移动开发 Unix Linux
Python 遍历文件每一行判断是否只有一个换行符详解
**Python 检查文件每行换行符:** 文章探讨了在Python中验证文件每行是否仅含一个换行符的需求。通过提供代码示例,展示了如何打开文件,遍历行,判断行尾的换行情况。基础实现检查`\n`,扩展版考虑了`\r\n`,并可选地将结果保存至新文件。这些功能有助于确保数据格式规范。
|
3月前
|
数据处理 Python
python遍历文件夹所有文件按什么排序
python遍历文件夹所有文件按什么排序
29 0