python - text用法 - plt xlim




在Python中獲取列表的最後一個元素 (9)

在Python中,你如何得到列表的最後一個元素?

為了得到最後一個元素,

  • 沒有修改列表,並且
  • 假設你知道列表中最後一個元素(即它是非空的)

向下標符號傳遞-1

>>> a_list = ['zero', 'one', 'two', 'three']
>>> a_list[-1]
'three'

說明

索引和切片可以採用負整數作為參數。

我修改了文檔中的一個示例以指示每個索引引用的序列中的哪個項目,在本例中,在字符串"Python"-1引用最後一個元素,即字符'n'

 +---+---+---+---+---+---+
 | P | y | t | h | o | n |
 +---+---+---+---+---+---+
   0   1   2   3   4   5 
  -6  -5  -4  -3  -2  -1

>>> p = 'Python'
>>> p[-1]
'n'

通過迭代拆包分配

為了獲得最後一個元素,這個方法可能會不必要地實現第二個列表,但為了完整性(並且因為它支持任何可迭代 - 不僅僅是列表):

>>> *head, last = a_list
>>> last
'three'

變量名稱,頭部綁定到不必要的新創建列表:

>>> head
['zero', 'one', 'two']

如果你打算不對這個清單做任何事情,這將更合適:

*_, last = a_list

或者,如果你知道它是一個列表(或者至少接受下標符號):

last = a_list[-1]

在一個函數中

一位評論者說:

我希望Python有一個像Lisp那樣的first()和last()函數......它將擺脫許多不必要的lambda函數。

這些定義非常簡單:

def last(a_list):
    return a_list[-1]

def first(a_list):
    return a_list[0]

或者使用operator.itemgetter

>>> import operator
>>> last = operator.itemgetter(-1)
>>> first = operator.itemgetter(0)

在任一情況下:

>>> last(a_list)
'three'
>>> first(a_list)
'zero'

特別案例

如果你正在做一些更複雜的事情,你可能會發現性能稍微不同的最後一個元素。

如果你是編程新手,你應該避免這一部分,因為它將算法的語義不同部分耦合在一起。 如果您在一個地方更改算法,可能會對另一行代碼產生意想不到的影響。

我試圖盡可能提供警告和條件,但我可能錯過了一些東西。 如果您認為我要離開警告,請發表評論。

切片

列表的一部分返回一個新的列表 - 所以如果我們想要在新列表中的元素,我們可以從-1切片到結尾:

>>> a_slice = a_list[-1:]
>>> a_slice
['three']

如果列表為空,這樣做有好處:

>>> empty_list = []
>>> tail = empty_list[-1:]
>>> if tail:
...     do_something(tail)

而試圖通過索引訪問引發了需要處理的IndexError

>>> empty_list[-1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

但是,為了這個目的,再次切片應該只在你需要的時候完成:

  • 一個新的列表創建
  • 如果先前列表為空,則新列表將為空。

for循環

作為Python的一個特性,在for循環中沒有內部範圍。

如果您已經對列表執行了完整的迭代,則最後一個元素仍將由循環中分配的變量名引用:

>>> def do_something(arg): pass
>>> for item in a_list:
...     do_something(item)
...     
>>> item
'three'

這在名單上不是語義上的最後一件事。 這在語義上是名稱, item所綁定的最後一件事。

>>> def do_something(arg): raise Exception
>>> for item in a_list:
...     do_something(item)
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "<stdin>", line 1, in do_something
Exception
>>> item
'zero'

因此,這只能用於獲取最後一個元素,如果你

  • 已經循環,並且
  • 你知道循環會完成(不會由於錯誤而中斷或退出),否則它將指向循環引用的最後一個元素。

獲取並刪除它

我們也可以通過刪除並返回最後一個元素來改變我們的原始列表:

>>> a_list.pop(-1)
'three'
>>> a_list
['zero', 'one', 'two']

但是現在原始列表已被修改。

-1實際上是默認參數,所以list.pop可以在沒有索引參數的情況下使用):

>>> a_list.pop()
'two'

只有這樣做,如果

  • 你知道列表中有元素,或者準備處理異常,如果它是空的,並且
  • 你打算從列表中刪除最後一個元素,將它當作堆棧處理。

這些是有效的用例,但不是很常見。

稍後保留其餘部分:

我不知道你為什麼要這樣做,但為了完整性,由於reversed返回一個迭代器 (它支持迭代器協議),所以你可以將它的結果傳遞給next

>>> next(reversed([1,2,3]))
3

所以這就像做了相反的事情:

>>> next(iter([1,2,3]))
1

但是我想不出有這麼做的好理由,除非您稍後需要其他反向迭代器,這可能看起來更像這樣:

reverse_iterator = reversed([1,2,3])
last_element = next(reverse_iterator)

use_later = list(reverse_iterator)

現在:

>>> use_later
[2, 1]
>>> last_element
3

在Python中,你如何得到列表的最後一個元素?


some_list = [1,2,3]

方法1:

some_list[-1]

方法2:

**some_list.reverse()** 

**some_list[0]**

方法3:

some_list.pop() 

some_list[-1]是最短和最Pythonic。

事實上,你可以用這個語法做更多的事情。 some_list[-n]語法獲取倒數第n個元素。 所以some_list[-1]得到最後一個元素, some_list[-2]得到倒數第二個等等,一直到some_list[-len(some_list)] ,這會給你第一個元素。

您也可以用這種方式設置列表元素。 例如:

>>> some_list = [1, 2, 3]
>>> some_list[-1] = 5 # Set the last element
>>> some_list[-2] = 3 # Set the second to last element
>>> some_list
[1, 3, 5]

你也可以這樣做:

alist.pop()

這取決於你想用你的列表做什麼,因為pop()方法會刪除最後一個元素。


如果你只想得到列表的最後一個值,你應該使用:

your_list[-1]

但是如果你想獲得價值並從列表中刪除它,你可以使用:

your_list.pop()

OR:你也可以用索引彈出...

your_list.pop(-1)

如果你的str()或list()對象最終可能是空的,如: astr = ''alist = [] ,那麼你可能想用alist[-1:]代替alist[-1]千篇一律“。

這個的意義是:

alist = []
alist[-1]   # will generate an IndexError exception whereas 
alist[-1:]  # will return an empty list
astr = ''
astr[-1]    # will generate an IndexError exception whereas
astr[-1:]   # will return an empty str

如果區別是返回一個空列表對像或空str對象更“最後一個元素” - 就像一個異常對象。


日期:2017-12-06

alist.pop()

我列出了所有列表的11種方法的詳盡cheatsheet供您參考。

{'list_methods': {'Add': {'extend', 'append', 'insert'},
                  'Entire': {'clear', 'copy'},
                  'Search': {'count', 'index'},
                  'Sort': {'reverse', 'sort'},
                  'Subtract': {'remove', 'pop'}}}

顯示python中最後一個元素的最簡單方法是

>>> list[-1:] # returns indexed value
    [3]
>>> list[-1]  # returns value
    3

還有很多其他方法可以實現這樣的目標,但這些方法使用起來很簡短而且甜美。


popes = ['john paul II', 'benedict XIV', 'francis I']
current_pope = []
for pope in popes:
     current_pope = pope

在for循環之後,您將獲得current_pope變量中的最後一項。







indexing