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

Posted

技术标签:

【中文标题】Python,将列表的最后三个元素分配给各个变量【英文标题】:Python, assign the last three elements of a list to individual variables 【发布时间】:2016-06-01 15:28:36 【问题描述】:

我想将列表的最后 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 项)。

也许我已经问过的问题可以用来做这件事,但我就是做不到。无论如何,为我的第一个问题道歉,这绝对是可怕的。

【问题讨论】:

a, b, c = l[-3:] 为什么不把 is 作为答案 Hugh Bothwell? ***.com/questions/646644/…的可能重复 @idjaw:没问题,我只是觉得太琐碎了,不值得完整回答。 @HughBothwell :) 我认为不回答太诱人了。 :P 【参考方案1】:

从列表末尾的 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

【讨论】:

好吧,你必须在某个地方扭转一些事情。 OP 希望 a 成为 "5"【参考方案2】:

使用负步长的负索引,将最后三个元素反转:

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

【讨论】:

【参考方案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 从末尾开始并从列表中使用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')

或者使用你的例子 for 循环:

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

【讨论】:

这对我来说当然是新的,但似乎正是我想要的。谢谢!

以上是关于Python,将列表的最后三个元素分配给各个变量的主要内容,如果未能解决你的问题,请参考以下文章

将列表元素分配给变量

为啥将列表元素分配给变量在这里以不同的方式工作?

python基础

简单的 Python 问题:为啥我不能将变量分配给排序列表(就地)? [复制]

Python 学习笔记09列表元组

python怎么将列表中元素分配成三份(无需连续),列举出所有的方案?