gpt4 book ai didi

list - 从任何给定的起点迭代列表并从头继续?

转载 作者:行者123 更新时间:2023-12-03 14:50:37 24 4
gpt4 key购买 nike

迭代列表很简单。在本例中,是我正在处理的组件的 TCollection 属性。我对从 0 索引迭代到最大索引没有任何问题 - 我已经这样做过很多次了。

但是,我现在正在做一些需要稍微不同的迭代的事情。我需要从任何给定的起点迭代集合项目列表 - 并完成所有项目的完整循环。在最后一个列表项之后,它将自动从列表的开头继续迭代。

澄清一下:传统迭代的工作原理如下:

for X := 0 to SomeList.Count-1 do ...

但我可能会在其他时候开始,例如:

for X := StartingPoint to EndingPoint do ...

这就是我无法弄清楚的“终点”。迭代只会增加。但就我而言,我需要将当前迭代位置重置为开头 - 就在迭代的中间。 EndingPoint 可能小于 StartingPoint,但它仍然需要执行一个完整的循环,一旦到达末尾,它就会从头开始。

所以,在包含 5 项的列表中,而不是仅仅...

0, 1, 2, 3, 4

我可能会从 2 点开始,并且想做...

2, 3, 4, 0, 1

如何完成这样的循环?

最佳答案

for foo := 0 to Pred(SomeList.Count) do begin
i := (foo + StartingPoint) mod SomeList.Count;
...
end;

在循环内使用索引i;忽略 foo 变量。

从范围的中间到末尾,i 将等于 foo + GettingPoint。之后,mod 运算符将有效地使 i 再次“环绕”到开头。

关于list - 从任何给定的起点迭代列表并从头继续?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38810290/

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