gpt4 book ai didi

arrays - 寻求 `zip` 的变化

转载 作者:数据小太阳 更新时间:2023-10-29 08:25:49 35 4
gpt4 key购买 nike

我有两个我想组合的以下形状的数组。

数组:

arr1 = [["apple", "aardvark"], ["banana", "beach"]]
arr2 = ['A', 'B']

期望的结果:

[["apple", "aardvark", "A"], ["banana", "beach", "B"]]

我想知道在 Ruby 中执行此操作的惯用方法是什么。

我显然可以只做一个循环,比如

i = 0
while i < arr1.length
arr1[i] << arr2[i]
i += 1
end

但我想知道是否有一个优雅的单线我只是忽略了。 zip 是我能想到的最接近的,但还不够:

arr1.zip(arr2)
# => [[["apple", "aardvark"], "A"], [["banana", "beach"], "B"]]

最佳答案

压缩后展平每个数组:

arr1.zip(arr2).map(&:flatten)

或者,Enumerable#zip采用一个可选 block ,在这种情况下,它会为每个组合调用该 block ,但不会返回值。

因此,你可以这样写,稍微不那么优雅:

[].tap { |res| arr1.zip(arr2) { |a, b| res.push(a + [b]) } }

关于arrays - 寻求 `zip` 的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57349343/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com