如何为以下内容编写逻辑:输入队列的每个第3个元素来自前面>后面应该添加到输出队列,否则它应该返回-1。
示例:
l=[1,2,3,4,5,6,7,8,9,10] # should return 4,7,10
l=[1,2] # should return -1
答案 0 :(得分:2)
单线列表理解应该可以解决问题:
[x for i, x in enumerate(l) if i > 0 and i % 3 == 0] or -1
答案 1 :(得分:2)
您可以使用切片:
l[3::3]
这将构建一个子列表,其元素位于索引3
,6
,9
等。问题当然是此列表可以为空。在这种情况下,我们必须返回-1
。好消息是空列表的真实性(通常是一个空集合)是False
。因此,我们可以使用or
为该案例提供值。所以解决方案是:
l[3::3] or -1
答案 2 :(得分:0)
这里没有循环方法:
track=[]
def every_third(l):
track.append(l[0])
if len(l)<3:
return 0
else:
return every_third(l[3:])
print(every_third(l))
if track[1:]:
print(track[1:])
else:
print(-1)
输出:
[4, 7, 10]
当列表为[1,2]时
-1