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

时间:2016-02-19 21:54:55

标签: 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让我失望,所以我决定在这里问。

编辑:

感谢您的回答,尽管我天真地认为我的问题是我需要的解决方案。 100%我的错误,因为不确切,就像在问一个问题之前的页面告诉你的那样。到目前为止,答案确实回答了我的要求,所以非常感谢帮助我,我已经学会了一些东西。

我真正想做的是:

我有一个很大的列表(实际上,不是在这个例子中),我想从它获得最后三个项目并在字符串后添加它们。我希望将每个列表项作为单个变量(可能不是正确的说法,但作为添加到字符串末尾的内容)添加到现有字符串中,如下所示:

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

我想做的是:

something + 5
something + 4
something + 3

不幸的是,那没用。从最后迭代列表,但只到某一点(在这种情况下,从最后开始的第3项)是我想要学习的东西。

也许我已经问过的问题可以用来做到这一点,obut我不能让它工作。无论如何,对于我的第一个问题道歉,无论如何都是可怕的。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

如果您使用的是python3,则可以使用extended iterable unpacking

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

In [15]: *_, c, b, a = l

In [16]: a,b,c
Out[16]: ('5', '4', '3')

根据您的编辑,如果您希望从列表末尾开始获取n项并对其执行某些功能,您可以使用reverse从最后开始并islice 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

答案 2 :(得分:0)

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

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