Cycle a list from alternating sides

后端 未结 15 2143
温柔的废话
温柔的废话 2020-12-14 01:03

Given a list

a = [0,1,2,3,4,5,6,7,8,9]

how can I get

b = [0,9,1,8,2,7,3,6,4,5]

That is, produce a new lis

15条回答
  •  没有蜡笔的小新
    2020-12-14 01:57

    Not sure, whether this can be written more compactly, but it is efficient as it only uses iterators / generators

    a = [0,1,2,3,4,5,6,7,8,9]
    
    iter1 = iter(a)
    iter2 = reversed(a)
    b = [item for n, item in enumerate(
            next(iter) for _ in a for iter in (iter1, iter2)
        ) if n < len(a)]
    

提交回复
热议问题