Python學習4 列表基礎知識和常用函數

列表

1.格式
在這里插入圖片描述
2.增刪改查
列表下標:
0–n-1
-n-(-1)
在這里插入圖片描述

#對列表進行切片
#0-(n-1)
#-n-(-1)
list=['dq','python','mm']
print(list[0:2])#[0,2)
print(list[-3:-2])#[-3,-2)
#輸出
#['dq', 'python']
#['dq']

題目:
【1:4:2】:[1,4),步長為2
下標從0開始
在這里插入圖片描述

3.添加元素
x元組,可迭代對象

在這里插入圖片描述

#添加元素append
list=['dq','python','mm']
print(list)
list2=['dq','python','mm']
list.append(list2)
print(list)
list.append('2435')
print(list)
#輸出
# ['dq', 'python', 'mm']
# ['dq', 'python', 'mm', ['dq', 'python', 'mm']]
# ['dq', 'python', 'mm', ['dq', 'python', 'mm'], '2435']#添加元素insert
list=['dq','python','mm']
print(list)
list.insert(2,'33')
print(list)
#輸出
#['dq', 'python', 'mm']
#['dq', 'python', '33', 'mm']#添加元素extend
list=['33','jjjk','dq']
print(list)
x=('3243','3454')
list.extend(x)
print(list)

注意:可以直接使用+,連接兩個列表

a=[1,2]
b=[5,6]
c=a+b
print(a,b,c,sep=' ',end='\n')
#[1, 2] [5, 6] [1, 2, 5, 6]

4.刪除元素
在這里插入圖片描述

#刪除元素pop
list=['dq', 'python', 'mm']
print(list)
list.pop()
print(list)
list.pop(0)
print(list)
#輸出
#['dq', 'python', 'mm']
# ['dq', 'python']
# ['python']#刪除元素remove
list=['dq', 'python', 'mm']
print(list)
list.remove('python')
print(list)
#清空元素clear
list=['dq', 'python', 'mm']
print(list)
list.clear()
print(list)#[]
#清空元素del
list=['dq', 'python', 'mm']
print(list)
del list
print(list)#<class 'list'>

題目:
1)
remove(3):刪除3這個元素
在這里插入圖片描述
2)
pop(4):刪除下標4對應的元素
從0開始
在這里插入圖片描述
3)
del刪除下標3到后面全部
下標從0開始
在這里插入圖片描述

5.修改元素
在這里插入圖片描述

#修改元素
list=['dq', 'python', 'mm']
list[0]='i love python'
print(list[0])
print(list)

6.查詢元素
(1)index查詢指定數據在列表里面的最小索引,如果沒有,會報錯

(2)count查詢指定數據在列表中出現的次數

(3)in運算符,查詢指定函數是否在列表中,返回布爾數據

#查詢元素
#(1)index查詢指定數據在列表里面的最小索引,如果沒有,會報錯# (2)count查詢指定數據在列表中出現的次數
# 
# (3)in運算符,查詢指定函數是否在列表中,返回布爾數據name = ['小陳','小紅','小王','老王','老陳','小劉','小風','小剛','小趙']
print(name.index('小王'))
print(name.count('小王'))
print('趙日天' in name)
#輸出
# 2
# 1
# False

list的地址傳遞

#地址傳遞
num1=[0,0,100]
num2=num1
num1[1]=88
print(num2)
#輸出
#[0, 88, 100]

使用內置函數 id() 可以獲取到一個變量的內存地址
代碼:

#地址傳遞
num1=[0,0,100]
num2=num1
#26983000 26983000
print(id(num1),id(num2),sep=' ')
num1[1]=88
#26983000 26983000
print(id(num1),id(num2),sep=' ')
print(num2)
#輸出
#[0, 88, 100]

list的遍歷

在這里插入圖片描述


#列表遍歷for
list=['小陳','小紅','小王','老王','老陳','小劉','小風','小剛','小趙']
for i in list:print(i)# 列表遍歷while
i=0
while i<len(list):print(list[i])i+=1

list的排序

在這里插入圖片描述

使用 list.sort() 會將 list 進行升序排序,返回 NoneType ,影響 list 本身【小-大】
使用 sorted(list) 會將 list 進行升序排序,返回 list ,不影響 list 本身【小-大】

#list排序sort-影響本身
list = ['2341', '962', '67', '34567']
print(list)
list.sort()
print(list)
#list排序sorted-不影響本身
list = ['2341', '962', '67', '34567']
print(list)
print(sorted(list))
print(list)

翻轉:reserve


#list翻轉
list = ['2341', '962', '67', '34567']
print(list)
list.reverse()
print(list)

編程實現冒泡排序算法,實現對[6, 5, 3, 1, 8, 7, 2, 4]的排序。
思想:讓一個數字和它相鄰的下一個數字進行比較運算,如果前一個數字大于后一個數字,則交換兩個數據的位置。

#列表冒泡排序
#按第一個字符ASCII碼排序
list=['2341','962','67','34567']print(list)
for i in range(len(list)-1):for j in range(len(list)-1-i):if list[j]>list[j+1]:temp=list[j]list[j]=list[j+1]list[j+1]=tempprint(list)

去除列表重復元素

1、使用set函數
set是定義集合的,無序,非重復

numList = [1,1,2,3,4,5,4]
print(list(set(numList)))
#[1, 2, 3, 4, 5]

2、先把list重新排序,然后從list的最后開始掃描

a = [1, 2, 4, 2, 4, 5,]
a.sort()
last = a[-1]
for i in range(len(a) - 2, -1, -1):if last == a[i]:del a[i]else:last = a[i]
print(a) #[1, 2, 4, 5]

3、使用字典函數

a=[1,2,4,2,4,]b={}b=b.fromkeys(a)c=list(b.keys())print(c) #[1, 2, 4]

4、append方式

def delList(L):L1 = []for i in L:if i not in L1:L1.append(i)return L1
print(delList([1, 2, 2, 3, 3, 4, 5])) #[1, 2, 3, 4, 5]

5、count + remove方式

def delList(L):for i in L:if L.count(i) != 1:for x in range((L.count(i) - 1)):L.remove(i)return L
print(delList([1, 2, 2, 3, 3, 4]))#[1, 2, 3, 4]

列表的嵌套

在這里插入圖片描述
random.randint(a,b):[a,b]

import random
#列表的嵌套
teacher = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
room = [[], [], []]
for i in teacher:room[random.randint(0, 2)].append(i)
print(room)
#輸出:
#[[2, 10], [6], [1, 3, 4, 5, 7, 8, 9]]

列表推導式

在這里插入圖片描述
range(n):[0,n-1]

#列表推導式
list=[i for i in range(11)]
print(list)
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

列表的復制

淺拷貝是在另一塊地址中創建一個新的變量或容器,但是容器內的元素的地址均是源對象的元素的地址的拷貝。也就是說新的容器中指向了舊的元素( 新瓶裝舊酒 )。
深拷貝,完全拷貝了一個副本,容器內部元素地址都不一樣

淺拷貝:a=b
copy(list)
copy.copy(list)
深拷貝:
copy.deepcopy(list)

#列表的復制b=a,淺拷貝
a=[1,2,'P']
b=a
b[0]='dq'
print(a,id(a),sep=' ',end='\n')
print(b,id(b),sep=' ',end='\n')
#地址空間指向一樣
#[1, 2, 'P'] 29181352
#[1, 2, 'P'] 29181352#列表的復制copy1,淺拷貝,指拷貝了一層
a=[1,2,'P']
b=a.copy()
b[0]='dq'
print(a,id(a),sep=' ',end='\n')
print(b,id(b),sep=' ',end='\n')
#地址空間指向不同
# [1, 2, 3] 20006312
# [1, 2, 3] 20007472#列表的復制copy2,淺拷貝,指拷貝了一層
a=[1,2,3,[4,'V','B']]
b=a.copy()
b[0]='dq'
print(a,id(a),sep=' ',end='\n')
print(b,id(b),sep=' ',end='\n')
#地址空間指向不同
# [1, 2, 3] 20006312
# [1, 2, 3] 20007472#列表的復制copy.copy1,淺拷貝,指拷貝了一層
import copy
a=[1,2,'A']
b=copy.copy(a)
b[0]='dq'
print(a,id(a),sep=' ',end='\n')
print(b,id(b),sep=' ',end='\n')
#地址空間指向不同
# [1, 2, 3] 23106584
# [1, 2, 3] 19097440#列表的復制copy.copy2,深拷貝
import copy
a=[1,2,3,['U','X',7]]
b=copy.copy(a)
b[0]='dq'
print(a,id(a),sep=' ',end='\n')
print(b,id(b),sep=' ',end='\n')
#地址空間指向不同
# [1, 2, 3] 23106584
# [1, 2, 3] 19097440#列表的復制copy.deepcopy,深拷貝
import copy
a=[1,2,3,['U','O',7]]
b=copy.deepcopy(a)
b[0]='dq'
print(a,id(a),sep=' ',end='\n')
print(b,id(b),sep=' ',end='\n')

題目:
淺拷貝,地址空間指向一樣
在這里插入圖片描述

列表和字符串的互相轉換

同時輸出列表和字符串

1.字符串>列表:split()a = 'my first python'b = a.split(" ")print(b)
輸出:2.列表>字符串:join()a = ['my', 'first', 'python']b = ' '.join(a)print(b)
輸出:

示例:

    def __str__(self):#print('style=' + self.style + '\t' + 'allSzie=' + str(self.allSzie) + '\t' + 'restSize=' + str(self.restSize)+'\t'+str(self.furnituresList) + '\n')#return 'style=' + self.style + '\t' + 'allSzie=' + str(self.allSzie) + '\t' + 'restSize=' + str(self.restSize)+'\t'+str(self.furnituresList) + '\n'return 'style=' + self.style + '\t' + 'allSzie=' + str(self.allSzie) + '\t' + 'restSize=' + str(self.restSize)+'\t'+' '.join(self.furnituresList) + '\n'

練習1-求列表中最大值及下標

#求列表中最大值及下標-sorted
list=[1,345,32435,78,324,7685]
list2=sorted(list)
print(('最大值=%d 下標=%d')%(list2[len(list2)-1],list.index(list2[len(list2)-1])))
#求列表中最大值及下標-for
list = [1, 345, 32435, 78, 324, 7685]
max = index = 0
for i in list:max=max if max >i else iindex=list.index(max)
print(('最大值=%d 下標=%d')%(max,index))

練習2-移除列表空字符串

#移除列表空字符串remove()-每次只移除一個
list = ['小陳', '小紅', '', '小王', "", '老王', '老陳', "", '小劉', '小風', '小剛', '小趙']
print(list)
for i in list:if i=='':list.remove('')
print(list)

練習3-計算 chars 列表中每個字符出現的次數

#1
#計算 chars 列表中每個字符出現的次數。chars = ['a', 'c', 'x', 'd', 'p', 'a', 'm', 'q', 's', 't', 'a', 'c']
chars = ['a', 'c', 'x', 'd', 'p', 'a', 'm', 'q', 's', 't', 'a', 'c']
list = []
for i in chars:check = i + "=" + str(chars.count(i))if (check in list) == False:list.append(check)
print(list)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446428.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446428.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446428.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python學習5 元組基礎知識和常用函數

元組概念 元組&#xff1a;a&#xff08;1&#xff0c;23&#xff09; 列表&#xff1a;a [1,23] 創建和訪問元組 Python 的元組與列表類似&#xff0c;不同之處在于tuple被創建后就不能對其進行修改&#xff0c;類似字符串。 元組與列表類似&#xff0c;也用整數來對它進行…

STL源碼剖析 仿函數

仿函數 也叫函數對象1&#xff0c;具有函數性質的對象&#xff1b;2&#xff0c;這種東西在調用者可以像函數一樣地被調用(調用)&#xff0c;在被調用者則以對象所定義的function call operator扮 演函數的實質角色。要將某種 “操作”當做算法的參數&#xff0c;唯一辦法就是先…

Python學習6 字典基礎知識和常用函數

字典概念 字典是 Python 提供的一種常用的數據結構&#xff0c;它用于存放具有映射關系的數據。為了保存具有映射關系的數據&#xff0c;Python 提供了字典&#xff0c;字典相當于保存了兩組數據&#xff0c;其中一組數據是關鍵數據&#xff0c;被稱為 key&#xff1b;另一組數…

EndNote概述

概述 EndNote 是SCI&#xff08;Thomson Scientific 公司&#xff09;的官方軟件&#xff0c;支持國際期刊的參考文獻格式有3776 種&#xff0c;寫作模板幾百種&#xff0c;涵蓋各個領域的雜志。簡單來說EndNote的功能就是替你管理文獻&#xff0c;一鍵插入固定格式的參考文獻…

Java web后端2 Servlet Maven HttpServlet ServletConfig ServletContext HTTP協議

創建項目 新建項目 Java Enterprise JDK1.8 Web Application Tomcat JAVA 默認 過程需要聯網 Maven的配置 IDEA內置Maven 修改本地倉庫位置&#xff0c;因為以后會越來越大 替換配置文件&#xff1a; 阿里云鏡像下載 Servlet基礎 1.動態Web資源開發 2.Servlet是使用J…

STL源碼剖析 配接器

配接器(adapters)在 STL組件的靈活組合運用功能上&#xff0c;扮演著軸承、轉換器的角色。Adapter這個概念&#xff0c;事實上是一種設計模式(design pattern)。 Design Patterns)) 一書提到23個最普及的設計模式&#xff0c;其中對odopter樣式的定義如下&#xff1a;將 一個cl…

中科大 計算機網絡3 網絡邊緣Edge

網絡結構 邊緣系統 網絡核心 接入網 方塊&#xff1a;邊緣系統(主機) 圓的&#xff1a;網絡核心&#xff0c;數據交換作用 連接邊緣系統和網絡核心的叫做接入網&#xff08;access&#xff09;&#xff0c;把邊緣的主機接入到網絡核心&#xff08;所以是分布式的&#xff09; …

STL源碼剖析 入門開始 STL概論與版本簡介

源代碼之中時而會出現一些全局函數調用操作&#xff0c;尤其是定義于<stl_construct.h> 之中用于對象構造與析構的基本函數&#xff0c;以及定義于<stl_uninitialized.h>之 中 用 于 內 存 管 理 的 基 本 函 數 &#xff0c; 以及定義于<stl_algobase.h>之中…

中科大 計算機網絡4 網絡核心Core 分組交換 電路交換

網絡核心 電路交換&#xff08;線路交換&#xff09;&#xff1a;打電話之前&#xff0c;先建立一條鏈路&#xff08;物理&#xff09; 分組交換&#xff1a;存儲轉發的方式 電路交換&#xff08;線路交換&#xff09; 通過信令&#xff08;控制信息&#xff0c;如&#xf…

STL 源碼剖析 空間配置器

以STL的運用角度而言&#xff0c;空間配置器是最不需要介紹的東西&#xff0c;它總是隱藏在一切組件&#xff08;更具體地說是指容器&#xff0c;container&#xff09; 的背后但是STL的操作對象都存放在容器的內部&#xff0c;容器離不開內存空間的分配為什么不說allocator是內…

中科大 計算機網絡7 分組延遲 分組丟失 吞吐量

分組丟失和延遲的原因 隊列太長沒有意義&#xff0c;用戶需求 排隊&#xff1a;輸出能力<到來的分組&#xff0c;需要等待 四種分組延遲 節點處理延遲&#xff1a;確定的 排隊延遲&#xff1a;隨機&#xff0c;取決于網絡情況 一個比特的傳輸時間&#xff1a; R1Mbps …

STL源碼剖析 迭代器iterator的概念 和 traits編程技法

iterator模式定義如下&#xff1a;提供一種方法&#xff0c;使之能夠依序巡訪某個 聚合物(容器)所含的各個元素&#xff0c;而又無需暴露該聚合物的內部表述方式.STL的中心思想在于&#xff1a;將數據容器(containers)和算法(algorithms)分開&#xff0c;彼此獨立設計&#xff…

中科大 計算機網絡11 應用層原理

應用層大綱 傳輸層向應用層提供的服務&#xff0c;形式是Socket API&#xff08;原語&#xff09; 一些網絡應用的例子 互聯網層次中&#xff0c;應用層協議最多 流媒體應用&#xff1a;直播 網絡核心最高的層次就是網絡層 應用進程通信方式 C/S&#xff1a; 客戶端&…

STL源碼剖析 序列式容器 vector 和 ilist

Vector list 單向鏈表 ilistlist的刪除操作&#xff0c;也只有指向被刪除元素的迭代器會失效&#xff0c;其他迭代器不會受到影響

中科大 計算機網絡5 接入網和物理媒體

接入網 接入網&#xff1a;把邊緣&#xff08;主機&#xff09;接入核心&#xff08;路由器&#xff0c;交換機&#xff09; 骨干網【連接主機和主機】和接入網中都有物理媒體 接入方式&#xff1a;有線和無線 帶寬共享/獨享 接入網&#xff1a;住宅接入modem modem調制解調…

STL源碼剖析 序列式容器 deque雙端隊列

相較于vector的內存拷貝&#xff0c;deque在內存不足時只需要進行內存的拼接操作即可&#xff0c;不需要重新配置、復制、釋放等操作&#xff0c;代價就是迭代器的架構不是一個普通的指針&#xff0c;比較復雜d e q u e 的迭代器 deque是分段連續空間。維持其“整體連續”假象…

中科大 計算機網絡6 Internet結構和ISP

互聯網的結構 端系統通過接入ISPs接入互聯網 n個ISP互相連接&#xff1a; IXP,Internet exchage point:互聯網接入點&#xff0c;互聯網交互點 ISP&#xff1a;互聯網服務提供商&#xff0c;提供接入&#xff0c;提供網絡【中國移動&#xff0c;中國電信】 ICP&#xff1a…

STL源碼剖析 Stack棧 queue隊列

隨機迭代器用于隨機數據訪問&#xff0c;所以棧stack不具備此功能

中科大 計算機網絡8 協議層次和服務模型

協議層次 協議層次&#xff1a;現實生活中的例子 分層 分層處理和實現復雜系統 圖中&#xff0c;左邊是模塊&#xff0c;右邊是分層 計算機的設計是分層&#xff0c;每一層實現一個或一組功能&#xff0c;下層向上層提供服務&#xff1b;但效率比較低 對等層實體通過協議來交換…

STL源碼剖析 heap堆結構

heap一般特指max-heap&#xff0c;即最大的元素位于heap和array的首部 heap不提供遍歷功能&#xff0c;也不提供迭代功能