2016-07-18 61 views
1

我正在創建一個函數,這個函數應用於一個元組時,它應該返回元組中的偶數索引元素。它怎麼沒有返回第四個索引元素?Python索引元組

def oddTuples(aTup): 
    ''' 
    aTup: a tuple 

    returns: tuple, every other element of aTup. 
    ''' 
    evenIndex =() 
    evenTuple =() 
    for i in aTup: 
     if aTup.index(i)%2 == 0: 
      evenIndex = evenIndex + (aTup.index(i),) 
      evenTuple += (aTup[aTup.index(i)],) 
    return evenTuple 
+0

使用'enumerate'。 – Serenity

+2

爲什麼不使用切片? 't =(0,1,2,3,4,5,);賠率= t [1 :: 2]; evens = t [:: 2]' – erip

+0

謝謝大家,我猜切片會對我有用 –

回答

4

使用a.index將返回該項目的第一次出現的索引。當元組中的項不唯一時,你不能指望這一點。

您應該考慮使用enumerate代替:

for i, v in enumerate(aTup): 
    if i % 2 == 0: 
     ... 

您可以更好使用切片並不太詳細:

aTup[::2] # starts at zero, stops at the length of the tuple, steps in 2s 

另外,請記住,索引默認從0開始。但隨着enumerate你可以把它從選定的號碼開始:

for i, v in enumerate(aTup, 1) # starts counting from 1 
0

爲我工作得很好。元組從0開始的索引所以,如果你有元組:

(0,1,2,3,4,5,6)

返回

(0, 2,4,6)

如果你想第4,你會需要改變

if i % 2 == 0: 

if i % 2 == 1: