0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python之列表list方法分類整理

冬至配餃子 ? 來源:繆斯之子 ? 作者:肖新苗 ? 2022-08-23 10:14 ? 次閱讀

題記

將自帶的方法分類整理、驗證并做成例子, 方便記憶與理解

起初

是為了方便自己查找, 后來因為越來越受歡迎, 所以分享出來

基本的增刪改查,insert,pop

def test_1():
# 增刪改查,增和刪
list1 = ['a', 'b', 'c']
list1.append('d')
assert ['a', 'b', 'c', 'd'] == list1, 'append error'
del list1[0]
assert ['b', 'c', 'd'] == list1, 'del error'
list1[0] = 'e'
assert ['e', 'c', 'd'] == list1, 'update error'
c = list1[1]
assert 'c' == c, 'query error'

list1.insert(1, 'f')
assert ['e', 'f', 'c', 'd'] == list1, 'insert error'
list1.pop(1)
assert ['e', 'c', 'd'] == list1, 'pop error'
list1.pop()
assert ['e', 'c'] == list1, 'pop 2 error'

2.list方法, +操作符, in, enumerate

def test_2():
# 方法:list(p), + , in,enumerate
list1 = list('abc')
assert ['a', 'b', 'c'] == list1, 'list(p) 方法錯誤'
list1 = list1 + ['d', 'e']
assert ['a', 'b', 'c', 'd', 'e'] == list1, 'list相加錯誤'
assert 'a' in list1, 'list的in操作錯誤'

list2 = list({'name': 'a', 'age': 19})
assert ['name', 'age'] == list2, 'list(p) 方法錯誤'

indexs = [i for i, _ in enumerate(list2)]
assert [0, 1] == indexs, 'enumerate error'

3. append和extend

def test_3():
# append 和 extend
list1 = ['a', 'b', 'c']
list2 = ['d', 'e']
list_append = list1.copy()
list_append.append(list2)
assert ['a', 'b', 'c', ['d', 'e']] == list_append, 'list append方法錯誤'
list_extend = list1.copy()
list_extend.extend(list2)
assert ['a', 'b', 'c', 'd', 'e'] == list_extend, 'list extentd 方法錯誤'

4.index 和 sort方法

def test_4():
# list.index(obj),sort
list1 = ['b', 'c', 'a']
i = 0
for v in list1:
assert list1.index(v) == i, f'list index方法錯誤 i:{i},v:{v}'
i += 1

list1.sort()
assert ['a', 'b', 'c'] == list1, 'list sort 方法錯誤'
list1.sort(reverse=True)
assert ['c', 'b', 'a'] == list1, 'list sort reverse 方法錯誤'

list2 = [{
'name': 'b',
'age': 20
}, {
'name': 'a',
'age': 18
}, {
'name': 'b',
'age': 19
}]
list2.sort(key=lambda kv: kv['name'])
assert {'name': 'a', 'age': 18} == list2[0], 'list sort key方法錯誤'
list2.sort(key=lambda kv: kv['age'])
assert [{
'name': 'a',
'age': 18
}, {
'name': 'b',
'age': 19
}, {
'name': 'b',
'age': 20
}] == list2, 'list sort key 方法錯誤'
list2.sort(key=lambda kv: (kv['name'], kv['age']))
assert [{
'name': 'a',
'age': 18
}, {
'name': 'b',
'age': 19
}, {
'name': 'b',
'age': 20
}] == list2, 'list sort key 方法錯誤'

5.淺復(fù)制和深度復(fù)制

import copy

def test_5():
# 淺復(fù)制 和 深度復(fù)制
# 只有l(wèi)ist1中的數(shù)據(jù)是引用類型的時候,才會考慮deepcopy,否則,平常的copy就行
# 也就是說,如果只是修改a,b,c, list3,list4,list5 都不會影響list1
list1 = ['a', 'b', 'c', ['e', 'f']]
list2 = list1
list3 = list1[:]
list4 = list1.copy()
list5 = [i for i in list1]
list6 = copy.deepcopy(list1)

assert id(list1) == id(list2), '== error'
assert id(list1) != id(list3), '[:] error'
assert id(list1) != id(list4), 'list copy error'
assert id(list1) != id(list5), 'for error'
assert id(list1) != id(list6), 'deepcopy error'

list6[3][0] = 'd'
assert ['a', 'b', 'c', ['e', 'f']] == list1, 'deepcopy 1 error'
assert ['a', 'b', 'c', ['d', 'f']] == list6, 'deepcopy 2 error'

6.倒著刪除: 為了防止刪除時報錯或者數(shù)據(jù)不對

# 正確的刪除方式
def test_6():
list1 = ['a', 'b', 'c', 'd']
for i in range(len(list1) - 1, -1, -1):
del list1[i]
assert [] == list1, 'list delete error'
# 錯誤的方式
def test_7():
# 不要這樣刪除:https://blog.51cto.com/u_14246112/3157689
list1 = ['a', 'b', 'c']
for i in list1:
list1.remove(i)
# 本意是刪除所有元素,但是刪除的過程中列表發(fā)生了位移,所以刪除了 a和c
assert ['b'] == list1, 'list delete 2 error'

7.拆分: n:小集合的長度為n

def test_8():
a1 = [i for i in range(100)]
s1 = split_list_by_size(a1, 7)
# 每個小集合應(yīng)該都是7,最后一個是小于等于7
assert len(s1[-1]) <= 7, 'split size 1 error'
s1.pop()
for i in s1:
assert len(i) == 7, 'split size 2 error'

def split_list_by_size(raw_list, n):
# n:小集合的長度為n
l = len(raw_list)
return [raw_list[i:i + n] for i in range(0, l, n)]
8. 拆分: n:有多少個小集合

def test_9():
a1 = [i for i in range(100)]
s1 = split_list_by_number(a1, 7)
# 大集合中有7個小集
assert len(s1) == 7, 'split number 2 error'

def split_list_by_number(raw_list, n):
# n:有多少個小集合
l = len(raw_list)
s = int(l / n) + 1
return [raw_list[i:i + s] for i in range(0, l, s)]


審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4758

    瀏覽量

    84287
  • 操作符
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    9026
收藏 人收藏

    評論

    相關(guān)推薦

    python如何修改列表中的每一個值數(shù)據(jù)

    Python中,我們可以使用不同的方法來修改列表中的每一個值數(shù)據(jù)。 方法一:使用for循環(huán)遍歷列表并修改元素值 首先,我們可以使用for循
    的頭像 發(fā)表于 11-29 17:03 ?4414次閱讀

    python將abc按大小順序輸出不用函數(shù)

    將'abc'按照大小順序輸出是一個常見的編程問題。在Python中,有多種方法可以實現(xiàn)這個目標(biāo)。本文將詳盡、詳實、細(xì)致地介紹幾種不使用函數(shù)的方法,以幫助您更好地理解問題以及解決方法
    的頭像 發(fā)表于 11-29 16:25 ?2684次閱讀

    python如何遍歷列表并提取

    遍歷列表Python中非常常見的操作之一,可以使用for循環(huán)或者while循環(huán)來實現(xiàn)。下面我將詳細(xì)介紹如何使用for循環(huán)遍歷列表并提取元素。 首先,讓我們簡單了解一下Python中的
    的頭像 發(fā)表于 11-23 15:55 ?1176次閱讀

    python怎樣讓列表里的數(shù)相加

    Python是一種功能強大的編程語言,可以用于處理各種各樣的數(shù)學(xué)運算和數(shù)據(jù)操作。在Python中,我們可以使用簡單的代碼將列表中的數(shù)字相加。 首先,我們需要創(chuàng)建一個包含數(shù)字的列表。在
    的頭像 發(fā)表于 11-22 09:53 ?1726次閱讀

    python中tuple的用法

    Python中的元組(tuple)是一種不可變的有序集合。與列表list)類似,元組可以存儲任意類型的數(shù)據(jù),但是元組一旦創(chuàng)建就不能被修改。在Python中,元組是使用圓括號進(jìn)行表示,
    的頭像 發(fā)表于 11-21 16:27 ?856次閱讀

    python怎么將list輸入兩次

    Python中,有多種方法可以將一個列表輸入兩次。下面是使用不同的方法來實現(xiàn)此功能的幾個示例: 方法1: 使用循環(huán)將
    的頭像 發(fā)表于 11-21 16:17 ?1229次閱讀

    python輸出list的每一個元素

    Python是一種簡單易學(xué)的編程語言,廣泛應(yīng)用于各個領(lǐng)域中。而處理列表list)是Python中非常常見的操作之一。在Python中,
    的頭像 發(fā)表于 11-21 16:16 ?1270次閱讀

    python怎么把list里面的值取出來

    Python語言的列表List)是一種非常常用和靈活的數(shù)據(jù)類型,它可以存儲多個元素,并允許對這些元素進(jìn)行各種操作。在Python中,可以使用簡單的語法來訪問和取出
    的頭像 發(fā)表于 11-21 16:13 ?2870次閱讀

    python去除list中重復(fù)的數(shù)據(jù)

    Python是一個強大的編程語言,提供了許多解決問題的方法和功能。其中一個常見的問題是如何去除列表中的重復(fù)數(shù)據(jù)。在本文中,我們將詳細(xì)介紹Python中去除
    的頭像 發(fā)表于 11-21 15:49 ?1345次閱讀

    python處理重復(fù)值的方法

    處理重復(fù)值是數(shù)據(jù)處理中常見的任務(wù)之一。在Python中,有幾種有效的方法可以處理重復(fù)值,包括使用集合、字典和pandas庫等。 使用集合 集合數(shù)據(jù)結(jié)構(gòu)是Python中用于存儲唯一元素的一種
    的頭像 發(fā)表于 11-21 15:47 ?1176次閱讀

    python列表和數(shù)組的區(qū)別

    內(nèi)部實現(xiàn)、性能、操作方式等多個方面進(jìn)行詳細(xì)分析,以幫助讀者更好地理解它們之間的區(qū)別和適用場景。 一、內(nèi)部實現(xiàn): 列表List): Python中的列表是一種有序的、可變的、可包含不同
    的頭像 發(fā)表于 11-21 15:13 ?2106次閱讀

    python怎么創(chuàng)建二維數(shù)組

    如何創(chuàng)建二維數(shù)組在Python中是一個常見的問題。在Python中,我們可以使用嵌套的列表(list of lists)或者使用NumPy庫來創(chuàng)建二維數(shù)組。在本文中,我們將詳細(xì)介紹這兩
    的頭像 發(fā)表于 11-21 15:10 ?3450次閱讀

    python的insert方法

    insert()方法Python中的列表對象提供的一個方法,用于在指定位置插入一個元素。該方法的語法如下:
    的頭像 發(fā)表于 11-21 14:27 ?1314次閱讀

    Python列表去重的4種方式

    列表去重是Python中一種常見的處理方式,任何編程場景都可能會遇到需要列表去重的情況。 列表去重的方式有很多,本文將一一講解他們,并進(jìn)行性能的對比。 讓我們先制造一些簡單的數(shù)據(jù),生成
    的頭像 發(fā)表于 11-02 10:46 ?1224次閱讀
    <b class='flag-5'>Python</b><b class='flag-5'>列表</b>去重的4種方式

    List和Numpy Array有什么區(qū)別

    List 列表列表是最常見的Python數(shù)據(jù)類型之一,它可以調(diào)整大小并且包含不同類型的元素,非常方便。 那么List和Numpy Arr
    的頭像 發(fā)表于 10-30 10:49 ?764次閱讀
    <b class='flag-5'>List</b>和Numpy Array有什么區(qū)別