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

2024-05-13 10:39:58 发布

您现在位置: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个项目。你知道吗

我对编程非常陌生,我的googlefu让我失望了,所以我决定在这里问一下。你知道吗

编辑:

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

我真正想做的是:

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

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

我想做的是:

something + 5
something + 4
something + 3

不幸的是,那没用。我想学习从最后迭代列表,但只迭代到某一点(在本例中是从最后的第三项)。你知道吗

也许我已经问过的问题可以用来做这个,但我就是做不到。抱歉,我的第一个问题无论如何,这是可怕的。你知道吗


Tags: 项目方法字符串答案版本编辑列表for
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"

如果您使用的是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项并对其执行某些功能,可以使用reversed从末尾开始,并从列表中获取islicen项:

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

相关问题 更多 >