使用随机函数(python)

时间:2009-11-17 17:33:34

标签: python function random

我想知道我们是否可以在python中做到这一点,让我们假设我们有3个不同的函数来处理数据 像这样:

def main():
  def process(data):
     .....
  def process1(data):
     .....
  def process2(data):
     .....
  def run():
     test = choice([process,process1,process2])
     test(data)
  run()

main()

我们可以选择一个随机函数来处理数据吗? 如果是,这是一个很好的方法吗?

谢谢!

4 个答案:

答案 0 :(得分:4)

优秀的方法(在您的骨架代码中有一些过度简化)。既然你问了一个例子:

import random

def main():
  def process(data):
     return data + [0]
  def process1(data):
     return data + [9]
  def process2(data):
     return data + [7]
  def run(data):
     test = random.choice([process,process1,process2])
     print test(data)
  for i in range(7):
    run([1, 2, 3])

main()

我已经做了7次循环,只是为了表明每个选择确实是随机的,即典型的输出可能是这样的:

[1, 2, 3, 7]
[1, 2, 3, 0]
[1, 2, 3, 0]
[1, 2, 3, 7]
[1, 2, 3, 0]
[1, 2, 3, 9]
[1, 2, 3, 9]

(当然每次都随机改变; - )。

答案 1 :(得分:3)

当然可以!

Python中的好东西,函数是第一类对象,可以这么简单的方式引用。

这意味着所有三种方法对传递给它们的参数都有相同的期望。 (这可能不言而喻)。

答案 2 :(得分:1)

只需在python中使用随机数模块。

random.choice(seq)

这将为您提供序列中的随机项目。

http://docs.python.org/library/random.html

答案 3 :(得分:0)

如果您将代码添加到顶部,您的代码将像您编写的一样工作:

from random import choice

或者,我认为像这样重写代码会稍微好一些:

import random

def main():
  def process(data):
     .....
  def process1(data):
     .....
  def process2(data):
     .....
  def run():
     test = random.choice([process,process1,process2])
     test(data)
  run()

main()

在代码中看到random.choice()会清楚地说明发生了什么!