我在两个单独的列表中有两组数据(我使用了soapui open groovy脚本) - 已经通过_inner_func
不确定这是否重要
XmlSlurper().parseText()
我希望将它们组合在一起(位置0到位置0然后位置1到位置1等)就像这样
a = [c1,c2,c3]
b = [0 100, 0 50 100, 0 500 1000]
到目前为止我的代码
c = [[c1,0 100],[c2,0 50 100],[c3,0 500 100]]
当我def splitList(list, splitAt)
{
list.inject([]) { curr, val ->
if(curr.size() == 0 || val == splitAt)
{
curr << []
}
curr[-1] << val
curr
}
}
def c = [a, splitList(b, 0)].transpose()*.flatten()
时,我得到log.info c
答案 0 :(得分:2)
你可以这样做......
count = 0
c = a.collect {
[it, b[count++]]
}
该代码会跳过任何错误处理,并假设a
和b
具有相同数量的元素。
答案 1 :(得分:1)
所以,鉴于你的两个清单:
def a = ['c1','c2','c3']
def b = [0, 100, 0, 50, 100, 0, 500, 1000]
您可以定义一个在每次看到给定值时拆分列表的函数:
def splitList(list, splitAt) {
list.inject([]) { curr, val ->
if(curr.size() == 0 || val == splitAt) {
curr << []
}
curr[-1] << val
curr
}
}
因此,调用splitList(b, 0)
会返回[[0, 100], [0, 50, 100], [0, 500, 1000]]
然后使用此(以及transpose
和flatten
)获取:
def c = [a, splitList(b, 0)].transpose()*.flatten()
那样:
assert c == [['c1', 0, 100], ['c2', 0, 50, 100], ['c3', 0, 500, 1000]]