最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python List列表對象內(nèi)置方法實(shí)例詳解

 更新時間:2019年10月22日 11:03:14   作者:范桂颶  
這篇文章主要介紹了Python List列表對象內(nèi)置方法,結(jié)合實(shí)例形式詳細(xì)分析了Python列表list各種常用內(nèi)置方法的功能與使用技巧,需要的朋友可以參考下

本文實(shí)例講述了Python List列表對象內(nèi)置方法。分享給大家供大家參考,具體如下:

前言

在上一篇中介紹了Python的序列和String類型的內(nèi)置方法,本篇繼續(xù)學(xué)習(xí)作為序列類型成員之一的List類型的內(nèi)置方法。

軟件環(huán)境

  • 系統(tǒng)
    • UbuntuKylin 14.04
  • 軟件
    • Python 2.7.3
    • IPython 4.0.0

列表List

列表是一種容器,存放內(nèi)存對象的引用。即是任意內(nèi)存對象的有序集合,不同的類型對象可以存放在同一個列表中。通過索引來訪問其中的元素??梢匀我獾那短?、伸長、異構(gòu)、為可變數(shù)據(jù)類型,支持原處修改列表內(nèi)部元素的引用。

修改列表的元素

In [130]: li = ['my','name','is','Jmilk']
In [131]: li[3] = 'new'
In [132]: li
Out[132]: ['my', 'name', 'is', 'new']

插入列表元素

插入的元素也可以是序列等任意類型

In [133]: li.append('list')
In [134]: li
Out[134]: ['my', 'name', 'is', 'new', 'list']

extend() 將序列中的元素迭代的附加到list中

L.extend(iterable) – extend list by appending elements from the iterable

注意:是將iterable中的元素迭代的添加到List中,成為List的元素,而不是將整個iterable成為List中的一個元素。這與append()方法是有本質(zhì)的區(qū)別的。

extend():

In [157]: li.extend(tp)
In [158]: li
Out[158]: ['my', 'name', 'is', 'Jmilk', 'a', 'b', 'c']

append():

In [166]: li = ['my','name','is','Jmilk']
In [167]: li2
Out[167]: ['hey', 'chocolate']
In [168]: li.append(li2)
In [169]: li
Out[169]: ['my', 'name', 'is', 'Jmilk', ['hey', 'chocolate']]

insert() 在指定的索引號中插入一個元素

L.insert(index, object) – insert object before index

在指定的原index之前插入一個元素

In [172]: li.insert(4,'and')
In [173]: li
Out[173]: ['my', 'name', 'is', 'Jmilk', 'and', ['hey', 'chocolate']]

可以插入任意類型對象,但只會插入一個元素,index后的元素依次后挪一位。

刪除列表元素

同時結(jié)合切片操作符。

注意:這中刪除元素的方法只有列表類型適用

In [135]: li[3:] = []
In [136]: li
Out[136]: ['my', 'name', 'is']

del() 刪除List中的元素

In [146]: li
Out[146]: ['my', 'name', 'is']
In [147]: del(li[1:])
In [148]: li
Out[148]: ['my']

pop() 彈出List中的一個元素

L.pop([index]) -> item – remove and return item at index (default last).

Raises IndexError if list is empty or index is out of range.

將List中的一個指定index的元素彈出(默認(rèn)為最后一個元素),并返回一個value,可以賦值給變量。當(dāng)List為空或指定的索引超出List長度時,會觸發(fā)一個indexError。

In [183]: li
Out[183]: ['My', 'name', 'is', 'Jmilk']
In [184]: name = li.pop()
In [185]: name
Out[185]: 'Jmilk'

remove() 刪除List中一個指定Value的元素

L.remove(value) – remove first occurrence of value.

Raises ValueError if the value is not present.

刪除List中第一個指定的Value的元素,不會返回一個Value。與del()的使用方法不同,remove()是通過value來決定刪除的元素,而不是通過index來決定。

In [192]: li
Out[192]: ['My', 'name', 'is', 'Jmilk', 'Jmilk']
In [193]: li.remove('Jmilk')
In [194]: li
Out[194]: ['My', 'name', 'is', 'Jmilk']

排序列表元素

sort() 正向排序

L.sort(cmp=None, key=None, reverse=False) – stable sort *IN PLACE*;
cmp(x, y) -> -1, 0, 1
List內(nèi)建愛呢的sort()函數(shù),跟序列類型的內(nèi)建愛呢函數(shù)sorted()有著非常相似的地方。
一樣擁有key()、cmp()函數(shù)和reverse缺省參數(shù),用法也基本相同。但是兩者之間還是有著本質(zhì)的差別,如下:

1. L.sort()函數(shù)只支持List類型對象,而sorted()函數(shù)支持所有的iterable迭代器類型。
2. L.sort()會改變原始的List對象,返回值為None。而sotred()函數(shù)不會修改原始iterable,會返回一個新的List。

在上一篇中有sorted()函數(shù)的詳細(xì)介紹,傳送門:http://m.fzitv.net/article/172487.htm

In [231]: li
Out[231]: [('a', 3), ('b', 2), ('c', 1)]
In [232]: li.sort(key = lambda x:x[1])
In [233]: li
Out[233]: [('c', 1), ('b', 2), ('a', 3)]

Operator Module支持排序

Operator模塊中的itemgetter, attrgetter兩個方法可以有效的支持L.sort()、sorted()兩種排序方法。
itemgetter:
itemgetter(item, …) –> itemgetter object
Return a callable object that fetches the given item(s) from its operand.
After f = itemgetter(2), the call f(r) returns r[2].
After g = itemgetter(2, 5, 3), the call g(r) returns (r[2], r[5], r[3])
從操作數(shù)中獲取一個由index索引指定的item,并返回一個可被調(diào)用的對象。
attrgetter:與itemgetter的用法類似,區(qū)別在于使用指定的value來指定要獲取的attribute。

下面做一個比較:

sorted():

In [239]: li
Out[239]: [('c', 1), ('b', 2), ('a', 3)]
In [240]: sorted(li,key = lambda x:x[1])
Out[240]: [('c', 1), ('b', 2), ('a', 3)]

L.sort():

In [241]: li.sort(key = lambda x:x[1])
In [242]: li
Out[242]: [('c', 1), ('b', 2), ('a', 3)]

operator.itemgetter():

In [251]: li
Out[251]: [('a', 3), ('b', 2), ('c', 1)]
In [252]: sorted(li,key = itemgetter(1))
Out[252]: [('c', 1), ('b', 2), ('a', 3)]

除此之外operator模塊能夠?qū)崿F(xiàn)多級排序:

In [256]: sorted(li,key = itemgetter(0,1))
Out[256]: [('a', 3), ('b', 2), ('c', 1)]
In [257]: sorted(li,key = itemgetter(0,1))
Out[257]: [('a', 3), ('b', 2), ('c', 1)]
In [258]: li = [('a', 3), ('a', 2), ('a', 1)]
In [259]: sorted(li,key = itemgetter(0,1))
Out[259]: [('a', 1), ('a', 2), ('a', 3)]

在以tuple_index=0作為關(guān)鍵字無法實(shí)現(xiàn)排序后,會自動的使用tuple_index=1作為關(guān)鍵字排序。

另一種多級排序的方法:

In [327]: li = [('a', 3), ('b', 2), ('c', 1)]
In [328]: li.sort(key = lambda x:(x[0],x[1]))
In [329]: li
Out[329]: [('a', 3), ('b', 2), ('c', 1)]
In [330]: li = [('a', 3), ('a', 2), ('a', 1)]
In [331]: li.sort(key = lambda x:(x[0],x[1]))
In [332]: li
Out[332]: [('a', 1), ('a', 2), ('a', 3)]

reverse() 逆向排序

始終與當(dāng)前順序逆向,默認(rèn)tuple_index=0為優(yōu)先排序。

In [263]: li.reverse()
In [264]: li
Out[264]: [('c', 1), ('b', 2), ('a', 3)]
In [265]: li.reverse()
In [266]: li
Out[266]: [('a', 3), ('b', 2), ('c', 1)]

count() 統(tǒng)計元素在list中出現(xiàn)的次數(shù)

L.count(value) -> integer – return number of occurrences of value

In [151]: li
Out[151]: ['my', 'name', 'is', 'Jmilk']
In [153]: li.count('my')
Out[153]: 1

List的深Copy和淺Copy

下面先看一個例子:

In [299]: li1 = [1,2,3,4]
In [300]: li2 = li1
In [301]: li1.append(5)
In [302]: li1,li2
Out[302]: ([1, 2, 3, 4, 5], [1, 2, 3, 4, 5])

可以看出,對li1的操作會影響到li2。實(shí)際上 li1 = li2 語句只是將li1的引用對象Copy給了li2,而沒有將li1的內(nèi)存對象Copy給li2。這就是List類型的淺Copy,相對的就是深Copy。

進(jìn)行List的深Copy的方法有下面兩種:

方法一:將li1的內(nèi)存對象Copy給li2,生成一個新的List對象。

In [305]: li1 = [1,2,3,4]
In [306]: li2 = li1[:]
In [307]: li1.append(5)
In [308]: li1,li2
Out[308]: ([1, 2, 3, 4, 5], [1, 2, 3, 4])

比較兩次賦值的區(qū)別:

In [312]: li2 = li1
In [313]: id(li1),id(li2)
Out[313]: (139950315013328, 139950315013328)
In [314]: li2 = li1[:]
In [315]: id(li1),id(li2)
Out[315]: (139950315013328, 139950314662440)

方法二:使用copy.deepcopy() 函數(shù)

deepcopy(x, memo=None, _nil=[])

Deep copy operation on arbitrary Python objects.

深Copy方法deepcopy()只對可變類型有效,所以Tuple、String不能使用。

In [321]: import copy
In [322]: li1 = [1,2,3,4]
In [323]: li2 = copy.deepcopy(li1)
In [324]: li1.append(5)
In [325]: li1,li2
Out[325]: ([1, 2, 3, 4, 5], [1, 2, 3, 4])

最后

因?yàn)楣ぷ髟蜃罱麻_了Linux、和powershell主題的版塊。希望可以做到即學(xué)即用,以博客來推動學(xué)習(xí)。但是Python仍然是我最喜歡的一種語言,他還有些非常多有意思的地方等待我們?nèi)グl(fā)現(xiàn)。繼續(xù)努力!:)

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python列表(list)操作技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • Python Sphinx使用實(shí)例及問題解決

    Python Sphinx使用實(shí)例及問題解決

    這篇文章主要介紹了Python Sphinx使用實(shí)例及問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • shelve  用來持久化任意的Python對象實(shí)例代碼

    shelve 用來持久化任意的Python對象實(shí)例代碼

    這篇文章主要介紹了shelve 用來持久化任意的Python對象實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Python刪除docx文檔中的頁眉和頁腳的示例代碼

    Python刪除docx文檔中的頁眉和頁腳的示例代碼

    在日常工作中,我們經(jīng)常需要處理文檔,其中包括刪除或修改頁眉和頁腳,本文將介紹如何使用Python編程語言和wxPython模塊創(chuàng)建一個簡單的GUI應(yīng)用程序,幫助我們刪除docx文檔中的頁眉和頁腳,需要的朋友可以參考下
    2025-01-01
  • pandas.DataFrame.drop_duplicates 用法介紹

    pandas.DataFrame.drop_duplicates 用法介紹

    這篇文章主要介紹了pandas.DataFrame.drop_duplicates 用法介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 一篇教程教你學(xué)會Python進(jìn)制轉(zhuǎn)換(十進(jìn)制轉(zhuǎn)二進(jìn)制、八進(jìn)制、十六進(jìn)制)

    一篇教程教你學(xué)會Python進(jìn)制轉(zhuǎn)換(十進(jìn)制轉(zhuǎn)二進(jìn)制、八進(jìn)制、十六進(jìn)制)

    計算機(jī)中只有1和0,所以就導(dǎo)致很多時候需要進(jìn)制轉(zhuǎn)換,本文介紹了Python進(jìn)制轉(zhuǎn)換,十進(jìn)制轉(zhuǎn)二進(jìn)制,十進(jìn)制轉(zhuǎn)八進(jìn)制,十進(jìn)制轉(zhuǎn)十六進(jìn)制,有興趣的可以了解一下
    2021-05-05
  • PYQT5 vscode聯(lián)合操作qtdesigner的方法

    PYQT5 vscode聯(lián)合操作qtdesigner的方法

    這篇文章主要介紹了PYQT5 vscode聯(lián)合操作qtdesigner的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 收藏整理的一些Python常用方法和技巧

    收藏整理的一些Python常用方法和技巧

    這篇文章主要介紹了收藏的一些Python常用方法和技巧,本文講解了逆轉(zhuǎn)字符串的三種方法、遍歷字典的四種方法、遍歷list的三種方法、字典排序的方法等Python常用技巧和方法,需要的朋友可以參考下
    2015-05-05
  • PyTorch模型轉(zhuǎn)TensorRT是怎么實(shí)現(xiàn)的?

    PyTorch模型轉(zhuǎn)TensorRT是怎么實(shí)現(xiàn)的?

    今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著PyTorch模型轉(zhuǎn)TensorRT是怎么實(shí)現(xiàn)的展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 10 個Python中Pip的使用技巧分享

    10 個Python中Pip的使用技巧分享

    眾所周知,pip 可以安裝、更新、卸載 Python 的第三方庫,非常方便。本文小編為大家總結(jié)了Python中Pip的使用技巧,需要的可以參考一下
    2022-07-07
  • python實(shí)現(xiàn)兩字符串映射

    python實(shí)現(xiàn)兩字符串映射

    這篇文章主要介紹了python實(shí)現(xiàn)兩字符串映射方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評論

磐安县| 胶南市| 涞水县| 尼勒克县| 云阳县| 抚松县| 旌德县| 萍乡市| 文水县| 芜湖县| 南昌县| 奈曼旗| 山东省| 万安县| 乌恰县| 左权县| 长顺县| 布拖县| 安仁县| 大冶市| 南丰县| 上高县| 鹤岗市| 米易县| 始兴县| 呼伦贝尔市| 蓝田县| 渝北区| 柯坪县| 灵川县| 仪征市| 通州市| 四会市| 宁晋县| 上林县| 锦州市| 绥德县| 青岛市| 和龙市| 乐业县| 贞丰县|