2016-02-19 69 views
1

我想將列表的最後3個元素分配給各個變量。我做的是:Python,將列表的最後三個元素分配給各個變量

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

所以a =「5」,b =「4」c =「3」。

它的工作原理,但我99%肯定有一個更好的方法來做到這一點。我嘗試了各種循環,但無法使它工作。所以我在尋找的東西基本上只是一個更好的版本,從列表的末尾獲得X數量的項目。

我對編程非常陌生,而我的Google-Fu失敗了,所以我決定在這裏問一下。

編輯:

感謝您的答案,雖然我很天真地認爲我的問題是我需要的解決方案。 100%我的錯誤不是確切的,就像提問之前的頁面告訴你的一樣。迄今爲止的答案確實回答了我所問的問題,非常感謝幫助我,我已經學到了一些東西。

什麼其實我是做的是以下幾點:

我有一個大名單(在現實中,而不是在這個例子中),我想有從它過去的三個項目和一個字符串後添加。我想有每個項目作爲一個單獨的變量(也許不是說出來的正確方法,但作爲東西添加到字符串的結尾)添加到現有的字符串,因爲這樣:

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

我想要做的是:

something + 5 
something + 4 
something + 3 

不幸的是,這並沒有奏效。從頭到尾迭代列表,但僅限於某個特定點(在這種情況下,從最後開始的第三項)是我想學習的東西。

也許我已經問過的問題可以用來做到這一點,obut我只是不能使它的工作。無論如何,我的第一個問題道歉,這是非常可怕的。

+7

'A,B,C = 1 [-3:]' –

+0

爲什麼不把作爲一個答案休·博思韋爾? –

+3

http:// stackoverflow可能存在重複。com/questions/646644/how-to-get-last-items-of-list-in-python – Forge

回答

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項目並且對它們執行一些功能,你可以使用反轉來在最後開始d 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 
+0

這對我來說確實是新的,但似乎是我正在尋找的東西。謝謝! – PeKo

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 
+2

那麼,你必須扭轉某個地方。 OP希望'a'成爲''5「'。 –

+0

謝謝。我錯過了這個 –

0

使用帶有負階躍負索引,以獲得最後的三個要素逆轉:

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