上QQ阅读APP看书,第一时间看更新
2.13.3 多重循环
循环可以嵌套,嵌套的循环被称为多重循环。
比如,麻将有1~9万,有1~9饼,有1~9条,我们想用简洁的代码把它们一一列举出来。先把1~9这9个数字列举出来。
for num in range(1, 10): print(num)
执行结果如下:
1 2 3 4 5 6 7 8 9
针对每个数值,麻将都有相应的“万”“饼”“条”,这又可以构成一重嵌套的循环。
for num in range(1, 10): for category in ['万', '饼', '条']: id = str(num) + category print(id) print()
输出结果如下(为了节省篇幅,部分输出内容被截掉)。
1万 1饼 1条 2万 2饼 2条 3万 3饼 3条
循环还可以有更多重嵌套,但是这样的代码执行效率很低,而且,层次结构太深的代码可读性比较差,应该尽量避免。
比如,有两个list,分别是python_students和java_students。其中,python_students包含了选修Python课程的学生信息,java_students包含了选修Java课程的学生信息,我们想知道哪些学生没有选修Java,只选修了Python。
要得到答案,我们需要遍历python_students。在每次循环中,针对得到的元素,对应学生的学号,然后针对java_students进行嵌套的遍历,来确认该学生是不是也选修了Java。
这样的设计在逻辑上是可行的,只是执行效率低。针对这样的情况,我们应该考虑用更合适的数据结构,比如,把python_students设计成字典而不是list,用学生的id作为key,这样,后续的很多操作就会简洁而高效。