我必须编写一个函数,它使用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
答案 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