我有一个列表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]
答案 0 :(得分:2)
更快的版本是使用像这样的第二次切片
a = [2, 4, 6, 8, 10, 12]
b = [2, 4, 6, 8, 10]
print a[::2][::-1]
print b[::2][::-1]
但您也可以使用reversed
和list
函数
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]