亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python學(xué)習(xí)之列表常用方法總結(jié)

 更新時(shí)間:2022年03月04日 15:56:06   作者:渴望力量的哈士奇  
這篇文章主要為大家介紹了Python中列表的幾個(gè)常用方法總結(jié),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python列表有一定幫助,需要的可以參考一下

列表(元組)基本操作符回顧

len()函數(shù)在列表與元組上的使用

示例如下:

names = ['Neo', 'Lily', 'Jack']
length = len(names)
print(length)

# 執(zhí)行結(jié)果如下
# >>> 3

注意:len()函數(shù)可以計(jì)算除了數(shù)字類型之外的其他所有數(shù)據(jù)類型的長(zhǎng)度

列表(元組)之間的累加與乘法

示例如下:

names = ['Neo', 'Lily', 'Jack']
new_names_01 = names + names
print(new_names_01)

names = ['Neo', 'Lily', 'Jack']
new_names_01 = names * 2
print(new_names_01)

# 輸出結(jié)果如下:
# >>> ['Neo', 'Lily', 'Jack', 'Neo', 'Lily', 'Jack']
# >>> ['Neo', 'Lily', 'Jack', 'Neo', 'Lily', 'Jack']

in 和 not in 在列表(元組)中的用法

in :判斷某個(gè)成員(元素)是否在該數(shù)據(jù)結(jié)構(gòu)中,返回結(jié)果為布爾值。

not in :判斷某個(gè)成員(元素)是否不在該數(shù)據(jù)結(jié)構(gòu)中,返回結(jié)果為布爾值。

示例如下:

names = ['Neo', 'Lily', 'Jack']
print(bool('Adam' in names))
print(bool('Adam' not in names))

# 執(zhí)行結(jié)果如下:
# >>> False
# >>> True

列表常用方法

append() 函數(shù)

append()函數(shù)的功能:將一個(gè)元素添加當(dāng)當(dāng)前列表中

append()函數(shù)的用法:list_append(new_item) ,new_item為添加進(jìn)列表的新的元素(成員)

append()函數(shù)的注意事項(xiàng):

  • 被添加的元素止水被添加到末尾
  • append() 函數(shù)是在原有列表的基礎(chǔ)上進(jìn)行添加,不需要額外的添加新的變量

示例如下:

names = ['Neo']
names.append('Jack')

print(names)

# 執(zhí)行結(jié)果如下:
# >>> ['Neo', 'Jack']
a = [1, 2, 3]
b = [4, 5, 6]

print(a.append(1))
print(a)

a.append(b)
print(a)

# 執(zhí)行結(jié)果如下:
# >>> [1, 2, 3, 1]
# >>> Node
# >>> [1, 2, 3, 1, [4, 5, 6]]		a.append(b) 會(huì)將整個(gè)列表當(dāng)做一個(gè)元素添加進(jìn)去

這里我們注意到 print(a.append(1)) 返回的是 Node ,這是為什么呢?

原因是append方法只是在恰當(dāng)?shù)奈恢眯薷脑瓉淼牧斜?!也就是說,不是返回一個(gè)列表,而只是修改原來的列表,所以如果用 等式 輸出的話,返回是None 。去掉返回值即可得到新的列表!

看下面兩個(gè)示例:

# 原代碼:

list= [1,2,3,4]
list= list.append(5)
print(list)

# 輸出:
# >>> None


# 修改后代碼

list= [1,2,3,4]
list.append(5)
print(list)

# 輸出:
# >>> 1,2,3,4,5

insert() 函數(shù)

insert() 函數(shù)的功能:講一個(gè)元素添加到列表的指定位置中

insert() 函數(shù)的用法:list.insert(index, new_item) , index為新的元素放在的新的位置(數(shù)字,下標(biāo)位),new_item為填的新成員(元素)

insert() 函數(shù)與append()函數(shù)的區(qū)別:

  • insert() 函數(shù)可以將元素添加至任意的位置,而append()函數(shù)只能將元素添加之末尾。
  • 如果insert() 函數(shù)傳入的位置不存在,則將新的元素添加至列表結(jié)尾

示例如下:

friuts = ['橘子', '香蕉', '火龍果']
friuts.insert(1, '蘋果')

print(friuts)

# 執(zhí)行結(jié)果如下:
# >>> ['橘子', '蘋果', '香蕉', '火龍果']


friuts.insert(10, '鴨梨')

print(friuts)

# 執(zhí)行結(jié)果如下:
# >>> '橘子', '蘋果', '香蕉', '火龍果', '鴨梨']

count() 函數(shù)

count() 函數(shù)的功能:返回列表(元組)中某個(gè)成員(元素)的個(gè)數(shù)

count() 函數(shù)的用法:inttype = list.count(item) , item為想要查詢的個(gè)數(shù)

count() 函數(shù)的注意事項(xiàng):如果查詢的成員(元素)不存在,則返回 0;列表只會(huì)檢查完整元素是否存在需要計(jì)算的內(nèi)容。

示例如下:

friuts = ['橘子', '香蕉', '火龍果', '香蕉', '蘋果']
count = friuts.count('香蕉')
print('friuts 列表中香蕉出現(xiàn)的次數(shù)為 ' + str(count) + ' 次')

# 執(zhí)行結(jié)果如下:
# >>> friuts 列表中香蕉出現(xiàn)的次數(shù)為 2 次


# 注意事項(xiàng):如果查詢的成員(元素)不存在,則返回 0;列表只會(huì)檢查完整元素是否存在需要計(jì)算的內(nèi)容。
friuts = ['橘子', '香蕉', '火龍果', '香蕉', '蘋果']
count = friuts.count('香')
print('friuts 列表中\(zhòng)'香\'出現(xiàn)的次數(shù)為 ' + str(count) + ' 次')

# 執(zhí)行結(jié)果如下:
# >>> friuts 列表中'香'出現(xiàn)的次數(shù)為 0 次

remove() 函數(shù)

remove() 函數(shù)的功能:刪除列表中的某個(gè)元素

remove() 函數(shù)的用法:list_remove = list.remove(item) , item為想要?jiǎng)h除的元素

remove() 函數(shù)的注意事項(xiàng):

  • 如果刪除的成員(元素)不存在,則會(huì)直接報(bào)錯(cuò)
  • 如果被刪除的元素有多個(gè),只會(huì)刪除第一個(gè)
  • remove() 函數(shù)不會(huì)返回一個(gè)新的列表,而是在原有的列表中對(duì)成員(元素)執(zhí)行刪除動(dòng)作

示例如下:

books = ['Python', 'Java', 'PHP']
books.remove('PHP')
print(books)

# 執(zhí)行結(jié)果如下:
# >>> ['Python', 'Java']

Python內(nèi)置函數(shù) del

del 函數(shù)的功能:將變量完全刪除(即踢打內(nèi)存管家將變量從內(nèi)存中刪除)

示例如下:

books = ['Python', 'Java', 'PHP']
books.del()
print(books)

# 執(zhí)行結(jié)果如下:
# >>> NameError: name 'books' is not defined. Did you mean: 'bool'?

reverse() 函數(shù)

reverse() 函數(shù)的功能:對(duì)當(dāng)前列表順序的反轉(zhuǎn)

reverse() 函數(shù)的用法: list = list.reverse() , 無參數(shù)傳遞

示例如下:

books = ['Python', 'Java', 'PHP']
books.reverse()
print(books)

# 執(zhí)行結(jié)果如下:
# >>> ['PHP', 'Java', 'Python']

sort() 函數(shù)

sort() 函數(shù)的功能:對(duì)當(dāng)前列表按照一定的規(guī)律進(jìn)行排序

sort() 函數(shù)的用法: list = list.sort(cmp=Node, key=Node, reverse=False)

  • cmp —> 可選參數(shù),制定排序方案的函數(shù)
  • key —> 參數(shù)比較
  • reverse —> 排序規(guī)則,reverse = True (降序);reverse = False (升序),升序是默認(rèn)狀態(tài)
  • 這里的 cmp 和 key涉及到函數(shù)的知識(shí)點(diǎn),后續(xù)的函數(shù)相關(guān)章節(jié)會(huì)詳細(xì)介紹

sort() 函數(shù)的注意事項(xiàng):列表中的元素類型必須相同,否則會(huì)報(bào)錯(cuò),無法排序

示例如下:

books = ['Python', 'C', 'PHP', 'Go', 'C++', 'Java']
books.sort()
print(books)

# 執(zhí)行結(jié)果如下:
# >>> ['C', 'C++', 'Go', 'Java', 'PHP', 'Python']

int_lists = [79, 6, 99, 46, 30]
int_lists.sort(reverse=True)
print(int_lists)

# 執(zhí)行結(jié)果如下:
# >>> [99, 79, 46, 30, 6]

test_list = ['Hello', 666, 3.14, True]
test_list.sort()
print(test_list)

# 執(zhí)行結(jié)果如下:
# >>> TypeError: '<' not supported between instances of 'int' and 'str'

clear() 函數(shù)

clear() 函數(shù)的功能:將當(dāng)前列表的數(shù)據(jù)清空

clear() 函數(shù)的用法: list = list.clear() , 該函數(shù)無參數(shù),無返回值

示例如下:

int_list = [79, 6, 99, 46, 30]
int_list.clear()
print(int_list)
print(len(int_list))

# 執(zhí)行結(jié)果如下:
# >>> []
# >>> 0

思考一個(gè)問題:當(dāng)我們使用 clear() 函數(shù) 清空一個(gè)列表時(shí),和重新命名一個(gè)空的列表,哪個(gè)更節(jié)省資源?

其實(shí)相對(duì)來說使用 clear() 函數(shù)更節(jié)省資源;當(dāng)我們創(chuàng)造一個(gè)變量的時(shí)候,會(huì)占用一個(gè)內(nèi)存地址,使用該變量之后該變量地址則會(huì)被內(nèi)存管家清空。再次使用時(shí),又會(huì)生成新的內(nèi)存地址,這個(gè)過程也是需要消耗資源的,只是因?yàn)樗俣忍幚淼谋容^快我們無法感知罷了。

copy() 函數(shù)

copy() 函數(shù)的功能:將當(dāng)前列表復(fù)制一份新的列表,雖然新的列表雖與舊的列表的內(nèi)容相同,但是內(nèi)存地址不同

copy() 函數(shù)的用法:list = list.copy() ,該函數(shù)無參數(shù),返回一個(gè)與舊列表一模一樣的列表

copy() 函數(shù)與 2次賦值 的區(qū)別:

  • 二次賦值的變量與原始變量共享相同的內(nèi)存地址空間
  • copy() 函數(shù)創(chuàng)建的新列表與原始列表不是一個(gè)內(nèi)存空間,新列表的變量值不因原列表變量的值的變更而變更
  • copy() 函數(shù)屬于淺拷貝

示例如下:

old_list = [1, 2, 3, 4, 5]
new_list = old_list.copy()

print(new_list)
print("\'old_list\'內(nèi)存地址為:" + str(id(old_list)), "\'new_list\'內(nèi)存地址為:" + str(id(new_list)))

# 執(zhí)行結(jié)果如下:
# >>> [1, 2, 3, 4, 5]
# >>> 'old_list'內(nèi)存地址為:2175764462080 'new_list'內(nèi)存地址為:2175767330496

copy() 函數(shù)與 2次賦值 的區(qū)別示例如下:

old_list = [1, 2, 3, 4, 5]
new_list_01 = old_list
new_list_02 = old_list.copy()

old_list.append(6)

print(new_list_01)
print(new_list_02)

# 執(zhí)行結(jié)果如下:
# >>> [1, 2, 3, 4, 5, 6]
# >>> [1, 2, 3, 4, 5]

淺拷貝

什么是淺拷貝?

通俗的說,我們有一個(gè)列表 a,列表里的元素還是列表。當(dāng)我們拷貝出新列表 b 后,無論是 a 還是 b 的內(nèi)部的列表中的數(shù)據(jù)發(fā)生了變化后,相互之間都會(huì)受到影響。這就是淺拷貝。

淺拷貝示例如下:

old_list = [[1, 2, 3], [4, 5]]
new_list = old_list.copy()

old_list[1].append(6)
print(str(old_list), "--------," + str(new_list))

# 執(zhí)行結(jié)果如下:
# >>> [[1, 2, 3], [4, 5, 6]] --------,[[1, 2, 3], [4, 5, 6]]


new_list[0].append(0)
print(str(old_list), "--------," + str(new_list))

# 執(zhí)行結(jié)果如下:
# >>> [[1, 2, 3, 0], [4, 5, 6]] --------,[[1, 2, 3, 0], [4, 5, 6]]

深拷貝

什么是深拷貝?

深拷貝不僅對(duì)列表第一層進(jìn)行了 copy ,對(duì)深層的數(shù)據(jù)也進(jìn)行了 copy, 原始變量與新變量之間完全不共享數(shù)據(jù),這就是深拷貝。

深拷貝示例如下:

old_list_deepcopy = [[1, 2, 4], [4, 5]]
new_list_deepcopy = copy.deepcopy(old_list_deepcopy)

old_list_deepcopy[1].append(6)
print(str(old_list_deepcopy), "--------," + str(new_list_deepcopy))

# 執(zhí)行結(jié)果如下:
# >>> [[1, 2, 4], [4, 5, 6]] --------,[[1, 2, 4], [4, 5]]


new_list_deepcopy[0].append(0)
print(str(old_list_deepcopy), "--------," + str(new_list_deepcopy))

# 執(zhí)行結(jié)果如下:
# >>> [[1, 2, 4], [4, 5, 6]] --------,[[1, 2, 4, 0], [4, 5]]

關(guān)于淺拷貝與深拷貝,我們?cè)賮砜纯磳?duì) 數(shù)字類型 和 字符串類型又是怎樣的,示例如下:

str_1 = "python"
print("str_1: ", str_1, id(str_1))

str_2 = str_1
print("str_2: ", str_2, id(str_2))

str_3 = copy.copy(str_2)
print("str_3: ", str_3, id(str_3))

str_4 = copy.deepcopy(str_1)
print("str_4: ", str_4, id(str_4))

# 執(zhí)行結(jié)果如下:
# >>> str_1: ?python 140222883317104
# >>> str_2: ?python 140222883317104
# >>> str_3: ?python 140222883317104
# >>> str_4: ?python 140222883317104

可以看出,數(shù)字類型與字符串類型的淺拷貝與深拷貝是沒有區(qū)別的,都是指向的同意內(nèi)存地址,所以深拷貝與淺拷貝是沒有意義的

extend() 函數(shù)

extend() 函數(shù)的功能:將其他列表或元組中的元素一次性的導(dǎo)入到當(dāng)前列表中

extend() 函數(shù)的用法:list = list.extend(iterable) ,iterable 代表列表或元組,該函數(shù)無返回值。

示例如下:

students = ['Neo', 'Jack', 'Lily']
new_students = ('Lilei', 'Lily')
print(id(students))

# 執(zhí)行結(jié)果如下:
# >>> 2032966498816

students.extend(new_students)

print(students)
print(id(students))

# 執(zhí)行結(jié)果如下:
# >>> ['Neo', 'Jack', 'Lily', 'Lilei', 'Lily']?? ??? ?相同的成員(元素)并不會(huì)覆蓋掉
# >>> 2032966498816

小練習(xí):完成列表合并功能

例如給出兩個(gè)列表[1, 3, 5, 7, 9]和[2, 4, 6, 8, 10],最終合并為[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

list_1 = [1, 3, 5, 7, 9]
list_2 = [2, 4, 6, 8, 10]
list_1.extend(list_2)
print(list_1)

# 執(zhí)行結(jié)果如下:
# >>> [1, 3, 5, 7, 9, 2, 4, 6, 8, 10]


list_1.sort()
print(list_1)

# 執(zhí)行結(jié)果如下:
# >>> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

以上就是Python學(xué)習(xí)之列表常用方法總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Python列表的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論