Arrays 如何迭代循环,从数组的最后一个元素开始,然后继续到序列中的下一个元素?(不倒车)
逻辑:从最后一个元素开始迭代时,索引可以减1。如果我尝试将数组转换为索引,则输出是奇怪的 //电流输出[0,1,2,3,4]Arrays 如何迭代循环,从数组的最后一个元素开始,然后继续到序列中的下一个元素?(不倒车),arrays,swift,loops,Arrays,Swift,Loops,逻辑:从最后一个元素开始迭代时,索引可以减1。如果我尝试将数组转换为索引,则输出是奇怪的 //电流输出[0,1,2,3,4] //预期输出[5,1,2,3,4]从示例输出中可以明显看出,您只需先打印最后一个元素,然后在数组中循环,直到最后一个元素 你可以像这样做 var index = -1 var array: Any [1,2,3,4,5] for index in array { print(array.index) index += 1 } 打印(数组[array.coun
//预期输出[5,1,2,3,4]从示例输出中可以明显看出,您只需先打印最后一个元素,然后在
数组中循环,直到最后一个元素
你可以像这样做
var index = -1
var array: Any [1,2,3,4,5]
for index in array {
print(array.index)
index += 1
}
打印(数组[array.count-1])
因为我在0。。
没有必要纠正循环
我不知道你为什么要这样做,但借助一些技巧,你可以得到你想要的。
谢谢
我建议使用映射。此解决方案适用于任何负位移:
var index = Int()
var array = [1,2,3,4,5]
let lastValue = array.last // first get the last value in variable
array.removeLast() // then remove your last value from array
array.insert(lastValue!, at: 0) // then add your last value to first index in array
for index in array {
print(index)
}
index will come = [5,1,2,3,4]
let shift=-11
让数组=[1,2,3,4,5]
设arrayLength=array.count
let index=shift%排列长度
设indexArray=array.Indexs.map{$0+index<0?$0+index+arrayLength:$0+index}
让outputArray=indexArray.map{array[$0]}
打印(输出阵列)
//印刷品[5,1,2,3,4]
如果需要编辑阵列,以下是一种快速方法:
let shift = -11
let array = [1, 2, 3, 4, 5]
let arrayLength = array.count
let index = shift % arrayLength
let indexArray = array.indices.map { $0 + index < 0 ? $0 + index + arrayLength: $0 + index}
let outputArray = indexArray.map { array[$0] }
print(outputArray)
// prints [5, 1, 2, 3, 4]
下面是一种在one for循环中完成所有操作的方法
var array = [1, 2, 3, 4, 5]
let lastElement = array.popLast() // Remove and store the last item
array = [lastElement].compactMap({ $0 }) + array // Append it at the begining
print(array)
// Prints [5, 1, 2, 3, 4]
对于0..=0中的i&&n您的代码,它甚至不是有效的Swift语法,因此当前输出将不存在。请编辑您的问题并显示您的实际代码。
let shift = -11
let array = [1, 2, 3, 4, 5]
let arrayLength = array.count
let index = shift % arrayLength
let indexArray = array.indices.map { $0 + index < 0 ? $0 + index + arrayLength: $0 + index}
let outputArray = indexArray.map { array[$0] }
print(outputArray)
// prints [5, 1, 2, 3, 4]
var array = [1, 2, 3, 4, 5]
let lastElement = array.popLast() // Remove and store the last item
array = [lastElement].compactMap({ $0 }) + array // Append it at the begining
print(array)
// Prints [5, 1, 2, 3, 4]
for i in 0..<array.count {
print(array[i < 1 ? i + array.count - 1 : i - 1])
}
func printArray<T>(_ array: [T], shift n: Int) {
guard n >= 0 && n <= array.count else {
return
}
for i in 0..<array.count {
print(array[i < n ? i + array.count - n : i - n])
}
}