列表中的每个其他元素然后反转

时间:2013-11-16 05:14:17

标签: python

我有一个列表a = [2,4,6,8,10]

我想让所有其他值以2的第一个值开头,这样就是2,6,10。接下来,我想将此值反转为10,6,2。我尝试的是a[-1::-2]来反转并获得其他所有价值。但是,目前我的列表有一个奇怪的长度。稍后我的程序将开始删除值2,6,10。剩下的将是[4,8],如果我做[-1 :: - 2]那将不会获得第一个值。我试过了a[::2].reverse(),但这是不允许的。我该怎么做呢

ex:

a = [2,4,6,8,10]
#remove every other element starting at index 0
# [2,4,6] --> reverse --> [6,4,2]
a = [4,8]
#remove every other element starting at index 0
# [4] --> reverse --> [4]
a = [8]

2 个答案:

答案 0 :(得分:2)

更快的版本是使用像这样的第二次切片

a = [2, 4, 6, 8, 10, 12]
b = [2, 4, 6, 8, 10]
print a[::2][::-1]
print b[::2][::-1]

但您也可以使用reversedlist函数

这样做
print list(reversed(a[::2]))
print list(reversed(b[::2]))

<强>输出

[10, 6, 2]
[10, 6, 2]

答案 1 :(得分:1)

>>> a
[2, 4, 6, 8, 10, 11]

# Works for odd lengths
>>> a[::2][::-1]
[10, 6, 2]

比这种化合物切片更有效 -

>>> a = [2,4,6,8,10,12]
>>> if len(a) % 2 == 0: v = a.pop()
... 
>>> a
[2, 4, 6, 8, 10]
>>> a[::-2]
[10, 6, 2]

你的另一个例子。什么时候都是。

>>> a = [4, 8]
>>> a[-1::-2]
[8]