2016-07-18 60 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: