0

2つのリストを取る関数があります。今私が持っているのは、関数がリストからすべてのパラメーターを取得し、それらを新しい行に出力するということです。問題は、関数自体を変更できないことですが、代わりに、関数のラッパーまたはループを作成して、必要な処理を実行する必要があります。

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 に答える