使用while循环和for循环处理元组

时间:2018-01-03 05:48:53

标签: python

我必须编写一个函数,它使用Python返回元组的每个替换元素。例如:如果输入为(1,"hi",2,"hello",5);我的输出应该是(1,2,5)。我使用while循环和[:: 2]得到了答案。但是当我尝试循环时,我面临错误,元组占据1位置参数但输入有5位置参数。那么,任何人都可以为我附加的while循环函数提供等效的循环函数吗? " https://pastebin.com/embed_js/YkGdiyva"

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

    returns: tuple, every other element of aTup. 
    '''
    # Your Code Here
    rTup = ()
    index = 0
    while index < len(aTup):
        rTup += (aTup[index],)
        index += 2

    return rTup

3 个答案:

答案 0 :(得分:1)

请尝试以下代码:

def oddTuples(aTup):
    out=()
    for i in range(len(aTup)):
        if i%2==0:
            out = out + (aTup[i],)
return out
aTup=(1,"hi",2,"hello",5)
print oddTuples(aTup)

运行上述代码时的输出:

(1, 2, 5)

答案 1 :(得分:0)

def oddTuples(aTup):
    rTup = ()
    for i,t in enumerate(aTup):
        if i%2==0:
            rTup += (t,)

    return rTup

答案 2 :(得分:0)

您也可以使用range来提供合适的indeces来访问元组值。 range可以使用1,2或3个参数。

如果一个参数被输入range,比如range(5),它将生成一个从0开始并从5开始的整数序列。(5将被排除,因此只有0,1,2 ,3,4将被给予。)

如果需要两个参数,比如说range(3, 5),则3是起始索引,5是它停止的索引。再注意5被排除在外。

如果使用三个数字,例如range(0, 10, 2),则第一个参数是要开始的索引;第二个是结束索引,第三个是步长。我们在下面展示了两种方式。

def oddTuples(aTup):
    rTup = ()
    for i in range(len(aTup)):  # will loop over 0, 1, ..., len(aTup)-1
        if i % 2 == 0:          # a condition to filter out values not needed
            rTup += (aTup[i],)
    return rTup

def oddTuples(aTup):
    rTup = ()
    for i in range(0, len(aTup), 2):  # the 2 is to specify the step size
        rTup += (aTup[i],)            # 0, 2, 4, ... till the sequence is exausted.
    return rTup