在Python中从列表中随机选择时是否加载了所有方法的值?

在Python中从列表中随机选择时是否加载了所有方法的值?,python,python-3.x,list,Python,Python 3.x,List,我正试图从一堆方法中找出最有效的随机选择方法,这些方法在Python中从这些方法的列表中返回随机值 随机导入 def list1(): 列表1=['苹果'、'橘子'、'香蕉'] 返回random.choice(列表1) def list2(): 清单2=[“番茄”、“花椰菜”、“土豆”] 返回random.choice(列表2) def list3(): 清单3=[“牛奶”、“果汁”、“水”] 返回random.choice(列表3) def return_random(): 数组\u of_

我正试图从一堆方法中找出最有效的随机选择方法,这些方法在Python中从这些方法的列表中返回随机值

随机导入
def list1():
列表1=['苹果'、'橘子'、'香蕉']
返回random.choice(列表1)
def list2():
清单2=[“番茄”、“花椰菜”、“土豆”]
返回random.choice(列表2)
def list3():
清单3=[“牛奶”、“果汁”、“水”]
返回random.choice(列表3)
def return_random():
数组\u of_random=[list1(),list2(),list3()]
返回random.choice(随机数组)
random\u word=return\u random()
打印(随机字)
def return_random_modified():
数组\u of_random2=['a','b','c']
random_choice2=random.choice(随机2的数组)
如果(随机选择2=='a'):
返回列表1()
如果(随机选择2=='b'):
返回列表2()
如果(随机选择2=='c'):
返回列表3()
random\u word2=返回\u random\u modified()

print(random_word2)
是,
return_random
会执行
list1
list2
list3
方法,因为它们上面有
()

通过移动调用括号,将函数引用传递到
数组\u of_random
列表,然后调用该随机函数,可以解决此问题:

def return_random():
    array_of_random = [list1, list2, list3]
    return random.choice(array_of_random)()

是的,
return\u random
确实执行
list1
list2
list3
方法,因为它们上面有
()

通过移动调用括号,将函数引用传递到
数组\u of_random
列表,然后调用该随机函数,可以解决此问题:

def return_random():
    array_of_random = [list1, list2, list3]
    return random.choice(array_of_random)()

您有
N
函数,希望避免计算未选择的
N-1
函数。好

你写道:

    array_of_random = [list1(), list2(), list3()]
    return random.choice(array_of_random)
当然,问题是第1行做了很多工作,其中大部分都是徒劳的,将被丢弃

您希望这样做:

    array_of_random = [list1, list2, list3]
这里的神奇之处在于我们有
N
函数,但我们不计算它们

然后

将调用(计算)单个选定函数,忽略其他
N-1
函数。
懒惰,为了胜利

您有
N
函数,并且希望避免评估未选择的
N-1
函数。好

你写道:

    array_of_random = [list1(), list2(), list3()]
    return random.choice(array_of_random)
当然,问题是第1行做了很多工作,其中大部分都是徒劳的,将被丢弃

您希望这样做:

    array_of_random = [list1, list2, list3]
这里的神奇之处在于我们有
N
函数,但我们不计算它们

然后

将调用(计算)单个选定函数,忽略其他
N-1
函数。
懒惰,为了胜利

谢谢你的详细解释!谢谢你的详细解释!谢谢你回答我所有的问题!谢谢你回答我所有的问题!