2017-05-06 160 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))]