【发布时间】:2021-10-11 22:15:02
【问题描述】:
我有一个关于递归的问题。我想要一个函数,它将 my_input 中的一个特定字母作为输入,并且 创建名为 my_output 的列表。该函数循环遍历 my_input-list 及其子列表并添加每个列表 以 my_output 的每个子列表中的一个字母开头。
my_input = [
["A", "B", "C"],
["D", "E", "F"],
["B", "G", "H"],
["H", "I", "J"],
]
my_output = [
["A", "B", "C"],
["B", "G", "H"],
["H", "I", "J"],
]
例如:起始字母是“A”。该函数查找以“A”开头的子列表并添加 它到 my_output。比它取“B”(此子列表中的第二个字母)并查看是否存在子列表,即 以“B”开头,这是真的,并将这个添加到 my_output。它对“C”做同样的事情(但这里是 没有以“C”开头的子列表)。现在它对 my_output 中的第二个列表执行相同的操作并检查 字母“G”和“H”(“G”没有结果,但“H”有一个结果 -> 将以“H”开头的子列表添加到 my_output。 它最后检查字母“I”和“J”,但没有找到任何结果。该函数返回 my_output。
通过那个问题,我希望学习如何创建递归函数(至少我希望这是正确的/最好的 解决这个问题的方法),但我不明白。
提前致谢。
顺便说一句:这可行,但我认为它不是很好,一定有更好的方法吗?
def get_my_output(letter):
checked_letters = []
my_output = []
for i in my_input:
if i[0] == letter:
checked_letters.append(i[0])
my_output.append(i)
for j in my_output:
for k in j:
if k not in checked_letters:
for l in my_input:
if l[0] == k:
if l not in my_output:
my_output.append(l)
else:
continue
return my_output
【问题讨论】:
标签: python list loops recursion