如何在 NetLogo 6.2 中组合 2 个列表的所有项目?

How to make combinations between all items of 2 lists in NetLogo 6.2?

我有以下疑问:我有两个列表,每个列表有三个值,我想在这两个列表中的项目之间进行组合。

例如: 列表 1 [5 10 15] 和列表 2 [2 4 8]。我想要以下组合:

list3 [[5 2] [10 2] [15 2] [5 4] [10 4] [15 4] [5 8] [10 8] [15 8]]

我只能进行以下组合:

let list1 ( list repro1 repro2 repro3 ) ;; input variable in the interface. repro1 = 5; repro2 = 10 and repro3 = 15
  let list2 ( list met1 met2 met3 ) ;; input variable in the interface. met1 = 2; met2 = 4 and met3 = 8
  let list3 ( map [ [ l1 l2 ] -> ( list l1 l2 ) ] list1 list2 )
  print list3 ;; command center: [[5 2] [10 4] [15 8]]

有人可以帮我吗?

提前致谢

示例代码的出色工作,感谢您所做的!你绝对是在正确的轨道上,你只需要在第一个里面添加一个额外的地图,这样迭代就会发生在每个组合上,而不是两个列表中的项目 0,然后是两个列表中的项目 1,然后是项目 2两个列表等:

to to combine
  let list1 [5 10 15] 
  let list2 [2 4 8]
  let list3 ( reduce sentence ( map [ i -> map [ j -> list i j ] list2 ] list1 ))
  print list3
end

输出:

[[5 2] [5 4] [5 8] [10 2] [10 4] [10 8] [15 2] [15 4] [15 8]]

reduce sentence 比 'flattens' 列表高一级,这样您就有了一个列表列表,而不是列表列表列表。

如果您想要上面指定的精确顺序,您可以打乱传递参数的顺序 - 例如:

to combine
  let list1 [5 10 15] 
  let list2 [2 4 8]
  let list3 ( reduce sentence ( map [ i -> map [ j -> list j i ] list1 ] list2 ))
  print list3
end

给出:

[[5 2] [10 2] [15 2] [5 4] [10 4] [15 4] [5 8] [10 8] [15 8]]

不确定项目的顺序在这里是否重要,只是想指出这一点。