2017-05-06 94 views
-2

从C++循环我有在C++程序我重写pyhton一个问题... 我有嵌套福尔循环的对于蟒蛇

for (int i = k + 1; i<size; i++) 
    { 
     for (int p = 0; p<k; p++) 
     { 

     } 

    } 

而且

for (int k = 0; k<size; k++) 
{ 
    for (int j = k; j<size; j++) 
    { 

    } 
} 

如何将两个不同势我可以在Python中写foor循环来获得for循环中的“i = k + 1”或“j = k”吗?

此致敬礼!

+1

你会在这个for循环做这样的事情?你在做某种卷积或其他什么? – user1685095

+0

如果您想提供一个您实际尝试完成的示例,这将有所帮助。一般来说,嵌套循环并不是做事的pythonic方式(大多数其他语言也有更好的构造),我想有一个很好的解决方案,它使用itertools或列表理解来完成你想要完成的任务,但是从你的文章中不清楚什么是什么那是。 –

+0

我建议你修改你的问题,提供更多关于你试图用这些循环解决的问题的信息。没有任何语境,很难给出一个好的答案。虽然你可以在Python中编写等效循环,但这很可能不是一种解决问题的优雅方法。 – besc

回答

2

这里的第一个for循环:

for i in range(k + 1, size): 
    for p in range(k): 
     pass 

,这里是第二个for循环:

for k in range(size): 
    for j in range(k, size): 
     pass 

看看在python范围()函数与去非常漂亮,在循环蟒蛇。

https://docs.python.org/2/library/functions.html#range

+3

我认为我们应该向OP表明这是非pythonic。甚至不是现代的C++,而不是盲目地回答他的问题。 – user1685095

0

第一个看起来像你想重复这样的

data = [1,2,3,4] 
k = 2 
out = [[1,2], [2,3], [3,4]] 

序列。如果我是正确的,你需要的是

def nwise_iter(sequence, n): 
    iters = itertools.tee(sequence, n) 
    for i, iter enumerate(iters): 
     for i in range(i): 
      iter(iter, None) 
    return zip(*iters) 

for slice in nwise_iter(data, k): 
    pass 

第二个外观像期望的输出应该是

[[1,2,3,4], [2,3,4], [3,4], [4]] 

如果这是真的,那么你会希望

out = [data[i:] for i in range(0, len(data))]