Python:将元组的元素添加到空元组

时间:2016-02-26 19:19:14

标签: python function tuples element

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

    returns: tuple, every other element of aTup. 
    '''
    num = len(aTup)
    newtup = ()
    for i in range(0,num+1):
        if (i % 2 == 1):
            newtup += aTup[i]
        else:
            continue
    return newtup

该函数将元组作为输入并返回包含aTup奇数输入的元组,即aTup[1]aTup[3]等。在第十行,newtup += aTup[i]我收到错误。请详细说明原因,请纠正问题。我知道这个问题也有单行解决方案,但我不想要那个。我想知道原因并纠正我在第十行的错误。我很乐意得到帮助。

4 个答案:

答案 0 :(得分:4)

您正在将数字本身添加到元组中。只有元组可以添加到元组中。将newtup += aTup[i]更改为newtup += (aTup[i],)。这将修复当前错误,但正如@Rockybilly指出的那样,使用range(0, num+1)是错误的。这将使用太多的数字。将其更改为range(0, num)。您也可以省略0,因为这是range()的默认值。

答案 1 :(得分:1)

aTup[1::2]
如果aTup至少有2个元素,

应该有用。

切片是Python最好的东西之一。

答案 2 :(得分:0)

您的范围函数中的(num + 1)额外,您只需要num。(我猜您会收到索引错误。)

for i in range(0,num):
    if (i % 2 == 1):
        newtup += aTup[i]
    else:
        continue

是的,我监督了元组错误,@ zondo

答案 3 :(得分:0)

元组是不可变的,所以你无法附加它们。我认为将值附加到列表中,当您完成后将列表更改为元组。

def oddTuples(aTup):
    newlist = []
    for index, element in enumerate(aTup):
        if index % 2 == 1:
            newlist.append(element)
    return tuple(newlist)