Python For循环在While循环中,从具有特定值的循环开始

2024-04-20 06:52:40 发布

您现在位置:Python中文网/ 问答频道 /正文

几天前我开始学习Python,在编写代码时遇到了一个程序。

这是我想用C++代码

做的事情
number = SOME_NUMBER;
while(1) {
    for(int i=number; i<sizeOfArray; i++) {
        // do something
    }
    number = 0;
}

基本上,对于for循环的第一次迭代,我想从number开始。 然后,每隔一次遍历for循环,我就想从0开始。

我现在能想到的一个老套的想法是做一些类似的事情:

number = SOME_NUMBER
for i in range(0, len(array)):
    if i != number:
        continue
    // do something

while True:
    for i in range(0, len(array)):
        // do something

这是最好的方法还是有更好的方法?


Tags: 方法代码in程序numberforlenrange
3条回答

在Python中,跳过传统意义上的集合并不理想。在对象上循环迭代的能力由对象控制,因此您不必像在C++中的{{CD1}}循环中那样手动地通过计数器。

据我所知,您在这里要做的是对list中的每个项执行相同的代码(Python中没有数组),执行多次。

要做到这一点:

def whatever_function(foo):
   # some code here that works on each item on the list
   # foo is an item of the list

while True:
   map(whatever_function, some_list)

这有什么问题?

starting_num = SOME_NUMBER
while True:
    for i in xrange(starting_num, len(array)):
        # do code
    starting_num = 0

它正是你想要的。

然而,我认为有更好的方法做事情,尤其是如果解决方案似乎“老套”。

如果你知道你想做什么,也许有更好的方法

我不明白你为什么不能做和你在C里一样的事:

number = SOME_NUMBER
while True:
    for i in range(number, len(array)):
        # do something
    number = 0

顺便说一句,根据所使用的Python版本的不同,xrange可能比range更可取。在Python 2.x中,range将生成所有数字的实际列表。xrange将生成一个迭代器,并且在范围较大时消耗更少的内存。

相关问题 更多 >