【发布时间】:2018-08-28 22:40:06
【问题描述】:
首先,了解一些背景知识,以便您了解我想要做什么。我正在创建一个可发音的单词生成器。为了使单词可发音,只有某些字母集可以跟随另一组字母的成员。例如,单词不能以“dtb”开头。如果在单词中满足条件,这很容易用一行 if 语句附加一个字母来实现。但是,由于这是一个随机词生成器,我想随机化 if/elif 语句的执行顺序。我认为最好的方法是拥有一个函数列表(其中每个函数代表一个 if 语句或规则),打乱列表,并迭代直到满足条件。这可以通过为每个规则显式定义如下函数来实现:
string = ''
def rule1():
string += random_letter
if string[0] in letter_set_A:
string += random_from_letter_set_B
return string
但是我宁愿不这样做,因为我最终会得到十几个与我不需要的名称相关的显式函数。我进一步研究了 lambdas 以在列表中创建隐式函数,但它们不支持我上面使用的赋值。
是否有可能创建一个像上面这样的复杂函数列表,可以以my_list[i]() 的格式调用而无需明确定义它们?如果没有,如何随机化 if/elif 语句的执行顺序?
【问题讨论】: