摘要:如果我想刪除第個元素,但是第個元素并不存在,而系統幫你刪除了列表的最后一個元素,我覺得這也是無法容忍的。所以在使用這些方法時,務必確認該偏移量的元素是否存,否則可能會報錯。
1 使用[]或者list()創建列表
user = [] user = list()2 使用list() 可以將其他類型轉換成列表
# 將字符串轉成列表 >>> list("abcde") ["a", "b", "c", "d", "e"] # 將元祖轉成列表 >>> list(("a","b","c")) ["a", "b", "c"]3 使用[offset]獲取元素 或 修改元素
>>> users = ["a","b","c","d","e"] # 可以使用整數來獲取某個元素 >>> users[0] "a" # 可以使用負整數來表示從尾部獲取某個元素 >>> users[-1] "e" # 數組越界會報錯 >>> users[100] Traceback (most recent call last): File "4 列表切片與提取元素", line 1, in IndexError: list index out of range >>> users[-100] Traceback (most recent call last): File " ", line 1, in IndexError: list index out of range # 修改某個元素 >>> users[0] = "wdd" >>> users ["wdd", "b", "c", "d", "e"] >>>
列表的切片或者提取之后仍然是一個列表
形式如:list[start:end:step]
>>> users ["wdd", "b", "c", "d", "e"] # 正常截取 注意這里并不會截取到users[2] >>> users[0:2] ["wdd", "b"] # 也可從尾部截取 >>> users[0:-2] ["wdd", "b", "c"] # 這樣可以獲取所有的元素 >>> users[:] ["wdd", "b", "c", "d", "e"] # 也可以加上步長參數 >>> users[0:4:2] ["wdd", "c"] # 也可以通過這種方式去將列表取反 >>> users[::-1] ["e", "d", "c", "b", "wdd"] # 注意切片時,偏移量可以越界,越界之后不會報錯,仍然按照界限來處理 例如開始偏移量如果小于0,那么仍然會按照0去計算。 >>> users ["wdd", "b", "c", "d", "e"] >>> users[-100:3] ["wdd", "b", "c"] >>> users[-100:100] ["wdd", "b", "c", "d", "e"] >>>5 使用append()添加元素至尾部
形式如:list.append(item)
>>> users ["wdd", "b", "c", "d", "e"] >>> users.append("ddw") >>> users ["wdd", "b", "c", "d", "e", "ddw"]6 使用extend()或+=合并列表
形式如:list1.extend(list2)
這兩個方法都會直接修改原列表
>>> users ["wdd", "b", "c", "d", "e", "ddw"] >>> names ["heihei", "haha"] >>> users.extend(names) >>> users ["wdd", "b", "c", "d", "e", "ddw", "heihei", "haha"] >>> users += names >>> users ["wdd", "b", "c", "d", "e", "ddw", "heihei", "haha", "heihei", "haha"]7 使用insert()在指定位置插入元素
形式如:list.insert(offset, item)
insert也不存在越界的問題,偏移量正負都行,越界之后會自動伸縮到界限之內,并不會報錯
>>> users ["wdd", "b", "c", "d", "e", "ddw", "heihei", "haha", "heihei", "haha"] >>> users.insert(0,"xiaoxiao") >>> users ["xiaoxiao", "wdd", "b", "c", "d", "e", "ddw", "heihei", "haha", "heihei", "haha"] >>> users.insert(-1,"-xiaoxiao") >>> users ["xiaoxiao", "wdd", "b", "c", "d", "e", "ddw", "heihei", "haha", "heihei", "-xiaoxiao", "haha"] # 下面-100肯定越界了 >>> users.insert(-100,"-xiaoxiao") >>> users ["-xiaoxiao", "xiaoxiao", "wdd", "b", "c", "d", "e", "ddw", "heihei", "haha", "heihei", "-xiaoxiao", "haha"] # 下面100也是越界了 >>> users.insert(100,"-xiaoxiao") >>> users ["-xiaoxiao", "xiaoxiao", "wdd", "b", "c", "d", "e", "ddw", "heihei", "haha", "heihei", "-xiaoxiao", "haha", "-xiaoxiao"]8 使用del刪除某個元素
形式如:del list[offset]
del是python的語句,而不是列表的方法,del刪除不存在的元素時,也會提示越界
>>> users ["-xiaoxiao", "xiaoxiao", "wdd", "b", "c", "d", "e", "ddw", "heihei", "haha", "heihei", "-xiaoxiao", "haha", "-xiaoxiao"] >>> del users[0] >>> users ["xiaoxiao", "wdd", "b", "c", "d", "e", "ddw", "heihei", "haha", "heihei", "-xiaoxiao", "haha", "-xiaoxiao"] >>> del users[100] Traceback (most recent call last): File "9 使用remove刪除具有指定值的元素", line 1, in IndexError: list assignment index out of range >>> del users[-100] Traceback (most recent call last): File " ", line 1, in IndexError: list assignment index out of range
形式如:list.remove(value)
>>> users ["xiaoxiao", "wdd", "b", "c", "d", "e", "ddw", "heihei", "haha", "heihei", "-xiaoxiao", "haha", "-xiaoxiao"] # 刪除指定值"c" >>> users.remove("c") >>> users ["xiaoxiao", "wdd", "b", "d", "e", "ddw", "heihei", "haha", "heihei", "-xiaoxiao", "haha", "-xiaoxiao"] # 刪除不存在的值會報錯 >>> users.remove("alsdkfjalsdf") Traceback (most recent call last): File "10 使用pop()方式返回某個元素后,并在數組里刪除它", line 1, in ValueError: list.remove(x): x not in list # 如果該值存在多個,那么只能刪除到第一個 >>> users.remove("haha") >>> users ["xiaoxiao", "wdd", "b", "d", "e", "ddw", "heihei", "heihei", "-xiaoxiao", "haha", "-xiaoxiao"]
形式如:list.pop(offset=-1) 偏移量默認等于-1,也就是刪除最后的元素
>>> users ["xiaoxiao", "wdd", "b", "d", "e", "ddw", "heihei", "heihei", "-xiaoxiao", "haha", "-xiaoxiao"] # 刪除最后的元素 >>> users.pop() "-xiaoxiao" >>> users ["xiaoxiao", "wdd", "b", "d", "e", "ddw", "heihei", "heihei", "-xiaoxiao", "haha"] # 如果列表本身就是空的,那么pop時會報錯 >>> user.pop(0) Traceback (most recent call last): File "11 使用index()查詢具有特定值的元素位置", line 1, in IndexError: pop from empty list >>> users.pop(0) "xiaoxiao" >>> users ["wdd", "b", "d", "e", "ddw", "heihei", "heihei", "-xiaoxiao", "haha"] # 越界時也會報錯 >>> users.pop(100) Traceback (most recent call last): File " ", line 1, in IndexError: pop index out of range
形式如:list.index(value)
# index只會返回第一遇到該值得位置 >>> users ["wdd", "b", "d", "e", "ddw", "heihei", "heihei", "-xiaoxiao", "haha"] >>> users.index("heihei") 5 # 如果該值不存在,也會報錯 >>> users.index("laksdf") Traceback (most recent call last): File "12 使用in判斷值是否存在列表", line 1, in ValueError: "laksdf" is not in list
形式如:value in list
>>> users ["wdd", "b", "d", "e", "ddw", "heihei", "heihei", "-xiaoxiao", "haha"] >>> "wdd" in users True13 使用count()記錄特定值出現的次數
形式如:list.count(value)
>>> users ["wdd", "b", "d", "e", "ddw", "heihei", "heihei", "-xiaoxiao", "haha"] >>> users.count("heihei") 2 >>> users.count("h") 014 使用join()將列表轉為字符串
形式如:string.join(list)
>>> users ["wdd", "b", "d", "e", "ddw", "heihei", "heihei", "-xiaoxiao", "haha"] >>> ",".join(users) "wdd,b,d,e,ddw,heihei,heihei,-xiaoxiao,haha" >>> user [] >>> ",".join(user) ""15 使用sort()重新排列列表元素
形式如:list.sort()
>>> users ["wdd", "b", "d", "e", "ddw", "heihei", "heihei", "-xiaoxiao", "haha"] # 默認是升序排序 >>> users.sort() >>> users ["-xiaoxiao", "b", "d", "ddw", "e", "haha", "heihei", "heihei", "wdd"] # 加入reverse=True, 可以降序排序 >>> users.sort(reverse=True) >>> users ["wdd", "heihei", "heihei", "haha", "e", "ddw", "d", "b", "-xiaoxiao"] # 通過匿名函數,傳入函數進行自定義排序 >>> students [{"name": "wdd", "age": 343}, {"name": "ddw", "age": 43}, {"name": "jik", "age": 90}] >>> students.sort(key=lambda item: item["age"]) >>> students [{"name": "ddw", "age": 43}, {"name": "jik", "age": 90}, {"name": "wdd", "age": 343}] >>> students.sort(key=lambda item: item["age"], reverse=True) >>> students [{"name": "wdd", "age": 343}, {"name": "jik", "age": 90}, {"name": "ddw", "age": 43}] >>>16 使用reverse()將列表翻轉
形式如:list.reverse()
>>> users ["wdd", "heihei", "heihei", "haha", "e", "ddw", "d", "b", "-xiaoxiao"] >>> users.reverse() >>> users ["-xiaoxiao", "b", "d", "ddw", "e", "haha", "heihei", "heihei", "wdd"]17 使用copy()復制列表
形式如:list2 = list1.copy()
list2 = list1 這種并不是列表的復制,只是給列表起了別名。實際上還是指向同一個值。
>>> users ["-xiaoxiao", "b", "d", "ddw", "e", "haha", "heihei", "heihei", "wdd"] >>> users2 = users.copy() >>> users2 ["-xiaoxiao", "b", "d", "ddw", "e", "haha", "heihei", "heihei", "wdd"] >>>18 使用clear()清空列表
形式如: list.clear()
>>> users2 ["-xiaoxiao", "b", "d", "ddw", "e", "haha", "heihei", "heihei", "wdd"] >>> users2.clear() >>> users2 []19 使用len()獲取列表長度
形式如:len(list)
>>> users ["-xiaoxiao", "b", "d", "ddw", "e", "haha", "heihei", "heihei", "wdd"] >>> len(users) 920 關于列表越界的深入思考
寫了這些方法后,我有一些疑問,為什么有些操作會提示越界,有些則不會呢?
會提示偏移量越界的操作有
list[offset] 讀取或者修改某個元素
del list[offset] 刪除指定位置的元素
list.remove(value) 刪除指定值的元素
list.pop(offset) 刪除指定位置的元素
如果偏移量越界,這些方法會報錯的。我的個人理解是:
假如我想讀取偏移量為10的元素,但是該元素并不存在,如果系統自動給你讀取了列表的最后一個元素,而且不報錯,這是無法容忍的bug。 如果我想刪除第10個元素,但是第10個元素并不存在,而系統幫你刪除了列表的最后一個元素,我覺得這也是無法容忍的。
所以在使用這些方法時,務必確認該偏移量的元素是否存,否則可能會報錯。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40879.html
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:概述列表解析即利用現有的可迭代對象創建新的列表的語法,其過程完全可以用循環復刻,但其解析效率比循環快一些,缺點也很明顯,即不適合用于大數據迭代對象的解析,因為會占用大量內存,導致。當然列表解析讓人愛不釋手的另一個原因就是簡潔。 概述 列表解析即利用現有的可迭代對象創建新的列表的Python語法,其過程完全可以用for循環復刻,但其解析效率比for循環快一些,缺點也很明顯,即不適合用于大數據迭...
摘要:概述列表解析即利用現有的可迭代對象創建新的列表的語法,其過程完全可以用循環復刻,但其解析效率比循環快一些,缺點也很明顯,即不適合用于大數據迭代對象的解析,因為會占用大量內存,導致。當然列表解析讓人愛不釋手的另一個原因就是簡潔。 概述 列表解析即利用現有的可迭代對象創建新的列表的Python語法,其過程完全可以用for循環復刻,但其解析效率比for循環快一些,缺點也很明顯,即不適合用于大數據迭...
摘要:的基本數據類型中的變量不需要聲明。在里,只有一種整數類型,表示為長整型,沒有中的。字符串的截取的語法格式如下變量頭下標尾下標索引值以為開始值,為從末尾的開始位置。列表列表是中使用最頻繁的數據類型。注意構造包含或個元素的元組的特殊語法規則。 1、python3的基本數據類型 Python 中的變量不需要聲明。每個變量在使用前都必須賦值,變量賦值以后該變量才會被創建。在 Python 中,...
摘要:解釋器的系統上,一般默認的版本為,我們可以將安裝在目錄中。中的按位運算法則如下下表中變量為,為,二進制格式如下邏輯運算符圖片邏輯運算符測試實例中包含了一系列的成員,包括字符串,列表或元組。 3.Python3解釋器 Linux/Unix的系統上,一般默認的 python 版本為 2.x,我們可以將 python3.x 安裝在 /usr/local/python3 目錄中。 安裝完成后,...
閱讀 2841·2021-11-25 09:43
閱讀 2488·2021-10-09 09:44
閱讀 2805·2021-09-22 15:49
閱讀 2578·2021-09-01 11:43
閱讀 2548·2019-08-30 14:16
閱讀 469·2019-08-29 17:24
閱讀 3026·2019-08-29 14:00
閱讀 1389·2019-08-29 13:05