Python使用数据结构

时间:2018-01-31 10:58:18

标签: python

如何为以下内容编写逻辑:输入队列的每个第3个元素来自前面>后面应该添加到输出队列,否则它应该返回-1。

示例:

l=[1,2,3,4,5,6,7,8,9,10]  # should return 4,7,10 

l=[1,2]                   # should return -1

3 个答案:

答案 0 :(得分:2)

单线列表理解应该可以解决问题:

[x for i, x in enumerate(l) if i > 0 and i % 3 == 0] or -1

答案 1 :(得分:2)

您可以使用切片:

l[3::3]

这将构建一个子列表,其元素位于索引369等。问题当然是此列表可以为空。在这种情况下,我们必须返回-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