2013-01-17 138 views
6

我試圖按順序獲取文件名列表。喜歡的東西python循環中的雙重循環

files-1-loop-21 
files-1-loop-22 
files-1-loop-23 
files-1-loop-24 
files-2-loop-21 
files-2-loop-22 
files-2-loop-23 
. 
. 
. 
and so on 

至於測試中,我已經寫了如下的Python代碼:

代碼sample_1:

for md in range(1,5): 
    for pico in range(21,25): 
     print md, pico 

它讓我對一些如:

`1 21 
    1 22 
    1 23 
    1 24 
    2 21 
    2 22 
    2 23 
    2 24 
    3 21 
    3 22 
    3 23 
    3 24 
    4 21 
    4 22 
    4 23 
    4 24 

`

,如果我使用:

代碼sample_2:

for md in range(1,5): 
    for pico in range(21,25): 
    print "file-md-loop-pico" 

我得到

files-md-loop-pico 
    files-md-loop-pico 
    files-md-loop-pico 
    files-md-loop-pico 
    files-md-loop-pico 
    files-md-loop-pico 
    files-md-loop-pico 

如何(代碼sample_2)應該被改變,因爲我想(得到的文件列表,如圖開始在這篇文章)在Python?

在此先感謝。

問候

回答

14

嘗試這種情況:

for md in range(1,5): 
    for pico in range(21,25): 
     print "file-{0}-loop-{1}".format(md, pico) 

或者:

from itertools import product 
for md, pico in product(range(1,5), range(21,25)): 
    print "file-{0}-loop-{1}".format(md, pico) 
2

使用字符串格式化。

print 'file-{0}-loop-{1}'.format(md, pico) 
+0

可以說我有三個環路,可以我使用as(print「files- {0} -loop- {1} -varies- {2}」。format(md,pico,jay))?這是否可以解釋{0}和{1}的含義? – Vijay

+1

@Vijay當然可以,數字是你想要在括號中包含'format'參數的引用。 – Volatility

2

1)的Python範圍由indentation確定。你的內碼必須正確縮進:

for md in range(1,5): 
    for pico in range(21,25): 
     print "file-md-loop-pico" 

2)您使用的字符串常量"file-md-loop-pico"而不是插入的變量mdpico。要format your string correctly,使用:

for md in range(1,5): 
    for pico in range(21,25): 
     print "file-{0}-loop-{1}".format(md, pico) 
+1

考慮到輸出,縮進不太可能是問題;最有可能的是OP只是格式化了SO帖子而不是實際的代碼。 – geoffspear

1

的解決方案,在其他的答案提供,由{環繞參數}是要做到這一點

print'file-{0}-loop-{1}'.format{md,poco) 

還有就是要做到這一點的舊方式的正確現代的方式你可能會看到,如果你熟悉C或C++的sprintf

print'file-%d-loop-%d'%(md,poco) 

的文檔,可能更有意義:http://docs.python.org/2/tutorial/inputoutput.html

+0

此代碼無效('file-%d-loop-%d'%(md,poco)) – Vijay

+0

您仍然必須打印結果,該如何格式化字符串 –

+0

我添加了打印,父母不需要 –

2

一行代碼:

print '\n'.join([('files-%d-loop_%d' %(i, j)) for i in xrange(1,5) for j in xrange(21,25)]) 
0

這將解決容易的問題:

代碼:

for md in range(1,5): 
     for pico in range(21,25): 

      print "file-%d-loop-%d"%(md,pico) 

輸出:

file-1-loop-21 
file-1-loop-22 
file-1-loop-23 
file-1-loop-24 
file-2-loop-21 
file-2-loop-22 
file-2-loop-23 
file-2-loop-24 
file-3-loop-21 
file-3-loop-22 
file-3-loop-23 
file-3-loop-24 
file-4-loop-21 
file-4-loop-22 
file-4-loop-23 
file-4-loop-24