Python,将列表的最后三个元素分配给各个变量

Python,将列表的最后三个元素分配给各个变量,python,Python,我想将列表的最后3项分配给各个变量。我所做的是: l = ["1", "2", "3", "4", "5"] a, b ,c = l[-1], l[-2], l[-3] 所以a=“5”,b=“4”c=“3” 这是可行的,但我99%确信有更好的方法。我尝试了各种for循环,但根本无法实现。所以我要找的基本上只是一个更好的版本,从列表的末尾得到X个数量的项目 我对编程非常陌生,我的Google Fu让我失望,所以我决定在这里提问 编辑: 谢谢你的回答,尽管我很天真,认为我的问题是我需要的解决方

我想将列表的最后3项分配给各个变量。我所做的是:

 l = ["1", "2", "3", "4", "5"]
 a, b ,c = l[-1], l[-2], l[-3]
所以a=“5”,b=“4”c=“3”

这是可行的,但我99%确信有更好的方法。我尝试了各种for循环,但根本无法实现。所以我要找的基本上只是一个更好的版本,从列表的末尾得到X个数量的项目

我对编程非常陌生,我的Google Fu让我失望,所以我决定在这里提问

编辑:

谢谢你的回答,尽管我很天真,认为我的问题是我需要的解决方案。100%是我的错,不准确,就像提问前的页面告诉你的那样。到目前为止的答案肯定回答了我的问题,所以非常感谢你的帮助,我已经学到了一些东西

我实际上想做的是:

我有一个很大的列表(实际上,不是在本例中),我想从中得到最后三项,并将它们添加到字符串之后。我希望将每个列表项作为单个变量(可能不是正确的表达方式,而是作为要添加到字符串末尾的内容)添加到现有字符串中,例如:

a = ["1", "2", "3", "4", "5"]
for i in a:
    print("something"+a[-i])
我想做的是:

something + 5
something + 4
something + 3
不幸的是,这不起作用。从末尾开始迭代列表,但只迭代到某一点(在本例中是从末尾开始的第三项),这是我想学习的内容


也许我已经问过的问题可以用来做这件事,但我就是做不到。对我的第一个问题表示歉意,无论如何,它都很糟糕。

从列表末尾的3个元素开始切片

 l = ["1", "2", "3", "4", "5"]
 a, b ,c = l[-3:] #a,b,c = 3,4,5
 a, b ,c = reversed(l[-3:]) #a,b,c = 5,4,3

从列表末尾的3个元素开始切片

 l = ["1", "2", "3", "4", "5"]
 a, b ,c = l[-3:] #a,b,c = 3,4,5
 a, b ,c = reversed(l[-3:]) #a,b,c = 5,4,3

使用带负步骤的负索引,以反转最后三个元素:

l = ["1", "2", "3", "4", "5"]
a,b,c = l[:-4:-1]
# a = "5", b = "4", c = "3"

使用带负步骤的负索引,以反转最后三个元素:

l = ["1", "2", "3", "4", "5"]
a,b,c = l[:-4:-1]
# a = "5", b = "4", c = "3"

如果您使用的是
python3
,您可以使用:

根据您的编辑,如果您想从列表末尾开始获取
n
项并对其执行某些功能,可以使用reversed to start at the end和n个项从列表中获取:

In [51]: from itertools import islice

In [52]: l = ["1", "2", "3", "4", "5"]

In [53]: c, b, a =  map("something{}".format ,  islice(reversed(l), 3))

In [54]: a,b,c
Out[54]: ('something3', 'something4', 'something5')
或者使用您的循环示例:

In [55]: for ele in islice(reversed(l), 3):
   ....:     print("Something{}".format(ele))
   ....:     
Something5
Something4
Something3

如果您使用的是
python3
,您可以使用:

根据您的编辑,如果您想从列表末尾开始获取
n
项并对其执行某些功能,可以使用reversed to start at the end和n个项从列表中获取:

In [51]: from itertools import islice

In [52]: l = ["1", "2", "3", "4", "5"]

In [53]: c, b, a =  map("something{}".format ,  islice(reversed(l), 3))

In [54]: a,b,c
Out[54]: ('something3', 'something4', 'something5')
或者使用您的循环示例:

In [55]: for ele in islice(reversed(l), 3):
   ....:     print("Something{}".format(ele))
   ....:     
Something5
Something4
Something3

a,b,c=l[-3:]
为什么不把它作为一个答案,Hugh Bothwell?可能是@idjaw:的复制品,没问题,我只是觉得它太琐碎了,不值得一个完整的答案。@HughBothwell:)我觉得不回答太诱人了P
a,b,c=l[-3:]
为什么不把它作为一个答案,Hugh Bothwell?可能是@idjaw:的复制品,没问题,我只是觉得它太琐碎了,不值得一个完整的答案。@HughBothwell:)我觉得不回答太诱人了好吧,你必须在某个地方把东西倒过来。OP希望
a
成为
“5”
。好吧,你必须在某个地方反转某些东西。OP希望
a
成为
“5”
。这对我来说肯定是新的,但似乎正是我想要的。谢谢这对我来说当然是新的,但似乎是我正在寻找的。谢谢