在Python中从列表中随机选择时是否加载了所有方法的值?
我正试图从一堆方法中找出最有效的随机选择方法,这些方法在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_
随机导入
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
函数。
懒惰,为了胜利 谢谢你的详细解释!谢谢你的详细解释!谢谢你回答我所有的问题!谢谢你回答我所有的问题!