在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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.淺復制和深度復制

import copy

def test_5():
# 淺復制 和 深度復制
# 只有list1中的數據是引用類型的時候,才會考慮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.倒著刪除: 為了防止刪除時報錯或者數據不對

# 正確的刪除方式
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)
# 本意是刪除所有元素,但是刪除的過程中列表發生了位移,所以刪除了 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)
# 每個小集合應該都是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)]


審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4797

    瀏覽量

    84690
  • 操作符
    +關注

    關注

    0

    文章

    21

    瀏覽量

    9043
收藏 人收藏

    評論

    相關推薦

    Python中dict支持多個key的方法

    ? 在Python中,字典(dict)是一種非常強大的數據結構,它允許我們通過鍵(key)來存儲和檢索值(value)。有時候,我們可能想要根據多個鍵來檢索或操作字典中的數據。雖然Python的字典
    的頭像 發表于 11-29 15:59 ?160次閱讀

    雷達的基本分類方法

    電子發燒友網站提供《雷達的基本分類方法.pdf》資料免費下載
    發表于 09-11 09:09 ?6次下載

    如何實現Python復制文件操作

    Python 中有許多“開蓋即食”的模塊(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在這篇文章中,你將會看到一些用 Python 實現文件復制的特殊方法。下面我們開始學習這九種不同的
    的頭像 發表于 07-18 14:53 ?424次閱讀

    鴻蒙ArkTS容器組件:ListItemGroup

    該組件用來展示列表item分組,寬度默認充滿[List]組件,必須配合List組件來使用。
    的頭像 發表于 07-10 09:20 ?684次閱讀
    鴻蒙ArkTS容器組件:ListItemGroup

    深度學習中的時間序列分類方法

    的發展,基于深度學習的TSC方法逐漸展現出其強大的自動特征提取和分類能力。本文將從多個角度對深度學習在時間序列分類中的應用進行綜述,探討常用的深度學習模型及其改進方法,并展望未來的研究
    的頭像 發表于 07-09 15:54 ?921次閱讀

    鴻蒙ArkTS容器組件:List

    列表包含一系列相同寬度的列表項。適合連續、多行呈現同類數據,例如圖片和文本。
    的頭像 發表于 07-09 14:57 ?824次閱讀
    鴻蒙ArkTS容器組件:<b class='flag-5'>List</b>

    鴻蒙ArkUI開發:常用布局【 創建列表List)】

    列表容器是為了高效處理長列表的容器,能支持橫向、豎向滾動,數據分組,分組頭懸浮等功能
    的頭像 發表于 05-15 15:30 ?790次閱讀
    鴻蒙ArkUI開發:常用布局【 創建<b class='flag-5'>列表</b>(<b class='flag-5'>List</b>)】

    OpenHarmony語言基礎類庫【@ohos.util.List (線性容器List)】

    List底層通過單向鏈表實現,每個節點有一個指向后一個元素的引用。當需要查詢元素時,必須從頭遍歷,插入、刪除效率高,查詢效率低。List允許元素為null。
    的頭像 發表于 05-10 16:57 ?738次閱讀
    OpenHarmony語言基礎類庫【@ohos.util.<b class='flag-5'>List</b> (線性容器<b class='flag-5'>List</b>)】

    OpenHarmony實戰開發-list開發指導

    list是用來顯示列表的組件,包含一系列相同寬度的列表項,適合連續、多行地呈現同類數據。 創建list組件 在pages/index目錄下的hml文件中創建一個
    發表于 04-29 14:44

    臺積電重返全球企業市值前十之列

    3月11日消息,隨著對人工智能的持續樂觀情緒不斷推動股價創出新高,臺積電目前已時隔近四年,重返了全球企業市值前十之列
    的頭像 發表于 03-12 09:49 ?708次閱讀
    臺積電重返全球企業市值前十<b class='flag-5'>之列</b>!

    交流電源List波形編輯功能如何使用?

    List波形編輯功能的使用方法和相關應用。 首先,交流電源List波形編輯功能一般通過電力系統仿真軟件或測試設備的軟件界面進行操作。用戶可以通過該功能來生成各種類型的交流電源波形,如正弦波、方波、三角波、鋸齒波等。這些波形可以具
    的頭像 發表于 01-19 15:01 ?802次閱讀

    鴻蒙開發實戰-(ArkUI)List組件和Grid組件的使用

    List列表滾動事件監聽 List組件提供了一系列事件方法用來監聽列表的滾動,您可以根據需要,監聽這些事件來做一些操作: onScro
    發表于 01-18 20:18

    如何解決Python爬蟲中文亂碼問題?Python爬蟲中文亂碼的解決方法

    如何解決Python爬蟲中文亂碼問題?Python爬蟲中文亂碼的解決方法Python爬蟲過程中,遇到中文亂碼問題是常見的情況。亂碼問題主要是由于編碼不一致所導致的,下面我將詳細介紹
    的頭像 發表于 01-12 15:11 ?2400次閱讀

    PWM產生的幾種方法總結

    PWM產生的方法有很多種,小編將常用的幾種產生方法作了一個整理以及分類,下面我們來了解一下。
    的頭像 發表于 01-11 09:15 ?3000次閱讀
    PWM產生的幾種<b class='flag-5'>方法</b>總結

    輻射整改的常用方法?|深圳比創達電子a

    衰減器。如VCD、DVD視盤機中的晶振,它對電磁兼容性影響較為嚴重,減少其幅度就是可行的方法之一,但其不是唯一的解決方法。c、還有一個間接的方法就是使信號線遠離干擾源。 2、分類整理
    發表于 01-04 10:39
    主站蜘蛛池模板: 男人j进女人j的一进一出视频 | 欧美高清老少配性啪啪 | 三级在线网址 | 中文字字幕码一二区 | 五月婷婷综合在线 | 看毛片网站 | 久久国产精品岛国搬运工 | 欧美高清一级 | 色婷婷色 | 精品四虎免费观看国产高清 | 免费一级特黄特色大片在线观看 | 天天摸夜夜摸成人免费视频 | 国产jlzzjlzz视频免费 | 激情五月婷婷综合 | 人人澡人人添 | 三级第一页 | 一个色综合网站 | 爱操视频在线观看 | 久久精品久久久久 | 久久天天躁狠狠躁夜夜 | 天天插天天插天天插 | 久久青草国产手机看片福利盒子 | 国产一级片免费看 | 亚洲国产欧美视频 | 成人aaa| 免费毛片网 | 亚洲vv| 中文字幕一区二区三区精彩视频 | 色福利网站 | 岛国最新资源网站 | 婷婷综合久久狠狠色99h | 麒麟色欧美影院在线播放 | 久久夜色精品国产亚洲 | 亚洲一区区 | 天天爽夜夜爽人人爽一区二区 | 有坂深雪在线 | 色淫阁色九九 | 亚洲三级视频 | 中文字幕88页| 国产一级特黄毛片 | 久久鬼|