从一个大的[String]和一个给定的子数组大小开始,我可以将这个数组拆分成更小的数组的最佳方法是什么?(最后一个数组将小于给定的子数组大小).
具体例子:
最大分割尺寸2分割["1","2","3","4","5","6","7"]
代码会产生[["1","2"],["3","4"],["5","6"],["7"]]
显然我可以手动更多一点,但我觉得像map()或reduce()这样的东西可以做我想要的非常漂亮的东西.
我有一个300000的数组,我希望它将它分成两个相等的部分.有没有什么方法可以用来实现这个目标?
它会比for-loop操作更快还是会对性能没有影响?
问题
let x = (0..<10).splitEvery( 3 )
XCTAssertEqual( x, [(0...2),(3...5),(6...8),(9)], "implementation broken" )
Run Code Online (Sandbox Code Playgroud)
评论
我在计算Range等元素数量时遇到问题......
extension Range
{
func splitEvery( nInEach: Int ) -> [Range]
{
let n = self.endIndex - self.startIndex // ERROR - cannot invoke '-' with an argument list of type (T,T)
}
}
Run Code Online (Sandbox Code Playgroud)