活动3:Permutations、迭代器、Lambda、列表
在这个活动中,我们将使用permutations对数字0、1和2生成所有可能的三位数组合。然后循环这个迭代器,并使用isinstance和assert来确保返回类型是元组。此外,使用一行包括dropwhile和Lambda表达式的代码将所有元组转换为列表,同时删除任何前导零(例如,(0,1,2)将变为[1,2])。最后,编写一个函数,输入为前面的列表,并返回其中包含的实际数字。
以下是引导你实施这个活动的步骤:
1.从itertools模块中查找permutations和dropwhile的定义。
2.编写一个表达式,使用数字0、1和2生成所有可能的三位数组合。
3.循环访问之前生成的迭代器表达式。输出迭代器返回的每个元素。使用assert和isinstance确保元素属于元组类型。
4.使用带有Lambda表达式的dropwhile再次编写循环,从元组中除去任何前导零。例如,(0,1,2)将变为[1,2]。另外,将dropwhile的输出投射到列表。
5.检查dropwhile返回的实际数据类型。
6.将前面的代码组合成一个块,并编写一个单独的函数。为该函数传入前面通过dropwhile生成的列表,然后函数将返回其中包含的所有数字。例如,如果将[1,2]传递给函数,它将返回12。确保返回类型确实是一个数字而不是字符串。尽管可以使用其他技巧来完成此任务,但我们要求你在函数中将传入列表视为栈,并通过从栈中读取单个数来生成数字。
通过这个活动,我们已经完成了这个主题,我们将转到下一个主题,它涉及基本的文件级操作。但是在我们离开这个主题之前,我们鼓励你考虑在不使用所有高级操作和数据结构的前提下,解决前面的问题。很快你就会意识到这个简单的实施步骤有多复杂,以及这些数据结构和操作带来了多大的价值。
说明
此活动的实施步骤可在附录中找到。