0

我有一个需要两个列表的函数。现在我现在拥有的是该函数将从列表中获取所有参数并将它们打印在新行中。问题是我不能改变函数本身,而是我必须在它上面创建一个包装器或一个循环来做我需要它做的事情。

Name = ['one', 'two', 'three']
size = [1, 2, 3]

def createSomething(Name, size = None):
    if size:
         something = loudEchoCmd("something create --size %s --name %s " % ((',')join(size), (',')join(Name)))
    else:
         something = loudEchoCmd("something create --name %s " % (',')join(Name))
    return something

当我运行它时,我得到的是:

 Example:
 something create --size 1, 2, 3 --name one, two, three

这就是我想要得到的:

 Example:
 something create --size 1 --name one
 something create --size 2 --name two
 something create --size 3 --name three

所以我需要在那个函数上创建一个包装器来做我需要它做的事情。我不知道该怎么做。这就是我通过更改函数来完成它的方式:

  def createSomething(Name, size = None):
      if size:
         for(i, (x1, x2)) in enumerate(zip(size,Name)):
             loudEchoCMD("something create --size {0} --name {1}")
      else:
         for x in Name:
             loudEchoCMD("something create --name {0}".format(x))

但不知道如何在不改变功能的情况下做到这一点:(

4

1 回答 1

1

这应该做你想要的:

def createManySomethings(Names, sizes):
    for (name, number) in zip(Names, sizes):
        createSomething([name], [number])
于 2012-10-02T08:58:37.620 回答