如何将Python列表倒序重新排序,以0号元素开始?

3

我试图以相反的顺序遍历列表,从-0索引项(也是第0项)开始,而不是-1索引项,这样我就可以得到新列表以供使用。我想出了两种方法来实现这个目标,但是它们都不够简洁和清晰。

a_list = [1, 2, 3, 4, 5]

print(a_list[:1] + a_list[:0:-1])    # take two slices of the list and add them
# [1, 5, 4, 3, 2]

list_range = range(-len(a_list)+1,1)[::-1]    # create an appropriate new index range mapping
print([a_list[i] for i in list_range])        # list comprehension on the new range mapping
# [1, 5, 4, 3, 2]

有没有办法在Python 3中使用切片或其他方法更简单地实现这个?

“-0th is also 0th”元素是什么意思? - Underoos
@Sukumar Rdjf a_list[0] == a_list[-0] @a_list[0]等于@a_list[-0] - user11563547
你期望的输出是什么?如果你想要反转列表,可以使用 a_list[::-1] - Sociopath
@AkshayNevrekar 我不想简单地反转从最后一项开始的列表。期望的输出由工作代码示例给出,并在每个打印后包含在注释中。 - user11563547
3个回答

5

如果你想参加编程高尔夫:

>>> a_list = [1, 2, 3, 4, 5]
>>> [a_list[-i] for i in range(len(a_list))]
[1, 5, 4, 3, 2]

1
我认为你的第一个建议是最干净的方法。如果你真的在优化字符计数,可以从第一个切片中删除两个字符:
print(a_list[:1] + a_list[:0:-1])

1

将所有内容左移一位并反转。

my_list.append(my_list.pop(0))
print my_list[::-1]

1
这似乎是最快的,适用于我不需要保留原始列表的情况,这是一个很好的备选方案。+1 - user11563547

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接