我正在用 Python 编写一个程序来查找数组中最短和最长的字符串,例如这是 find_shortest
def find_shortest(words):
N = len(words)
shortest = words[0]
i = 1
while i < N:
if len(shortest) >= len(words[i]): #Change only this line for find_longest
shortest = words[i]
i += 1
return shortest
我的问题是 find_longest 函数与 find_shortest 函数完全相同,只是 find_longest 使用 <= 符号而不是 >=。我不想复制粘贴 find_shortest 函数来制作 find_longest,但我没有其他选择。在这种情况下,如何避免复制粘贴和冗余?
您可以基于函数参数(例如顺序参数)定义要执行的操作。放置一个 if 来识别操作是否为:最短执行最短操作,如果不是,则执行最长操作。它会放置一些逻辑,但可以帮助避免函数重复,并且可以使用相同的范围。
您可以创建一个比较函数,根据函数所处的“模式”来使用
其中
mode
,值'shortest'
或 是'longest'
。如果需要,可以简化为布尔值。我使用字符串只是为了清楚起见。您可以添加一个标志作为参数,并基于它选择相应的比较,例如:
可以通过使用 for 循环进行迭代来简化该函数。
此时尝试重用这些简单的代码会导致代码更复杂、更慢;有时剪切和粘贴就可以了。