2012-09-26 85 views
3

我已經看過幾個問題Iterating over every two elements in a listPython "Every Other Element" Idiom,他們已經得出了一個答案,我可能會被迫使用,但我覺得有一個更好的方法來;我想下面的代碼做的是能夠打印每兩個或每4個元素打印元組中的每2個元素

Gun_rack =(
     'Gun 1:', 'Colt New Frontier 44 Special', 'Cal:.44  ', 'Weight: 2.8 lbs', 'Ammo Capacity :6', 
     'Gun 2:', 'Smith & Wesson SW1911DK' , 'Cal:.45 ACP ', 'Weight: 2.6 lbs', 'Ammo Capacity :9', 
     'Gun 3:', 'Heckler & Koch P2000SK V2', 'Cal.357  ', 'Weight: 1.50 lbs', 'Ammo Capacity :13',    
     'Gun 4:', 'Magnum Research Desert Eagle', 'Cal.50  ', 'Weight: 4.46 lbs', 'Ammo Capacity :7', 
     'Gun 5:', 'Heckler & Koch MP5K ',   'Cal 9mm  ', 'Weight: 4.78 lbs', 'Ammo Capacity :30', 
     ) 

我知道,如果我用一本字典我可以打印像在給出的示例中的每個鍵和值參數蟒蛇的教程,但項目是按隨機順序因此元組

>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'} 
>>> for k, v in knights.iteritems(): 
...  print k, v 
... 
gallahad the pure 
robin the brave 

我希望能使用類似的代碼或者列表或元組:

for a ,b in Gun_rack: 
    print a,b 

for a,b,c,d, in Gun_rack: 
    print a,b,c,d, 

我想我應該提到什麼樣的輸出應該是代替步進低谷元組並打印每2元或每4個元素,它應該通過元組並打印每2個元素則下一個2個元素直到元組結束。

回答

9

要打印所有其他元素:

for elem in Gun_rack[::2]: 
    print elem 

和所有其他元件,開始與第二個:

for elem in Gun_rack[1::2]: 
    print elem 

當然,要做到每第四元件,只是改變了2到4.這個工程的原因是因爲slice對象(當你做a[:]這是隱式創建的)3個參數 - 啓動,停止,闊步。在這裏,我們正在指定步伐。

+0

@DSM - 謝謝。沒有大腦的時刻。 – mgilson

+0

@PierreGM - 也感謝你。我同意這兩個修改。 – mgilson