【Python基础知识-pycharm版】第三节-列表
Python 第三節(jié)-列表
- 序列-列表
- 列表創(chuàng)建的四種方式
- 創(chuàng)建列表的增加和刪除
- 列表元素訪問和技術(shù)
- 列表排序
- 二維列表
- 表格數(shù)據(jù)的存取和讀取
序列-列表
常用的序列結(jié)構(gòu):字符串 元祖 字典 集合
列表對象大小可變,根據(jù)需要隨時增加或縮小
列表創(chuàng)建的四種方式
一、基本語法[]創(chuàng)建
a = [] print(a) #結(jié)果,創(chuàng)建空的列表 [] b = [1,2,"abc"] print(b) #結(jié)果:[1, 2, 'abc'] print(b[2]) #結(jié)果:abc二、list()創(chuàng)建
c = list() print(c) #結(jié)果:創(chuàng)建一個空的列表 c.append(1) print(c) #結(jié)果:[1] c = list("abcdefg") print(c) #結(jié)果:['a', 'b', 'c', 'd', 'e', 'f', 'g'] d = list(range(10)) print(d) #結(jié)果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]三、range()創(chuàng)建整數(shù)列表
range()可以幫助我們非常方便的創(chuàng)建整數(shù)列表,這在開發(fā)中及其有用。語法格式為:
四、推導(dǎo)式生成列表(簡介一下,重點在 for 循環(huán)后講)
h = [x*2 for x in range(10)] #循環(huán)創(chuàng)建多個元素 print(h) #結(jié)果:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]k = [x*2 for x in range(100) if x%9==0] #通過if過濾元素 print(k) #結(jié)果:[0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198]創(chuàng)建列表的增加和刪除
append()方法
在列表中添加元素:在列表末尾添加元素
方法append()將元素添加到列表末尾,不影響列表中其他所有元素。列表名.append(‘新的元素名’),可以創(chuàng)建一個空列表,使用一系列append()語句添加元素
例如:在students列表末尾增加"Gavin"項。
+方法
地址會發(fā)生變化,也就是創(chuàng)建了新的列表對象
insert()
在列表中插入元素:使用方法insert()可在列表的任何位置添加新元素,需要制定新元素的索引和值。列表名.insert(索引,‘值’)
insert()方法是指在某個特定位置前面增加一個數(shù)據(jù)項。
例如:在students原始列表中"Palin"前面增加"Gilliam"。
extend()方法
將目標列表的所有元素添加到本列表的尾部,屬于原地操作,不創(chuàng)建新的列表對象
例如:在例1基礎(chǔ)上,students列表末尾繼續(xù)增加"Kavin"與"Jack"和"Chapman"三項。
del刪除
del的書寫方式是 del list[i] 根據(jù)索引刪除,也就是根據(jù)位置刪除元素。
pop的使用
pop的書寫方式是 list.pop[i] 根據(jù)索引返回對應(yīng)位置的元素,列表也刪除相對于位置的元素。list.pop()刪除列表最后一個元素,并返回這個元素。
remove的使用
remove的書寫方式是 list.remove(value) 刪除第一個出現(xiàn)的對應(yīng)元素,注意不是根據(jù)索引刪除。而是確定列表種有某個元素,刪除它。
刪除的本質(zhì)是數(shù)組元素的拷貝
列表元素訪問和技術(shù)
index()獲得指定元素在列表指定范圍
>>> alist [1, 3, 5, 5.5, 3, 5, 1, 3, 5] >>> alist.index(3) 1 >>> alist.index(100) Traceback (most recent call last):File "<pyshell#102>", line 1, in <module>alist.index(100) ValueError: 100 is not in listcount()獲得指定元素在列表中出現(xiàn)的次數(shù)
>>> alist [1, 3, 5, 5.5, 3, 5, 1, 3, 5] >>> alist.count(3) 3 >>> alist.count(5) 3 >>> alist.count(4) 0len()返回列表長度
#!/usr/bin/pythonlist1, list2 = [123, 'xyz', 'zara'], [456, 'abc']print "First list length : ", len(list1); print "Second list length : ", len(list2);成員資格判斷
判斷是否存在指定的值
1.count()方法,如果存在則返回大于0的數(shù),如果返回0則表示不存在。
2.“in”關(guān)鍵字來判斷一個值是否存在于列表中,返回結(jié)果為“True”或“False”。
結(jié)果:
First list length : 3 Second lsit length : 2列表排序
sort
sorted():該函數(shù)第一個參數(shù)iterable為任意可以迭代的對象,cmp是比較函數(shù),通常為lambda函數(shù),key是用于比較的關(guān)鍵字,reverse表示排序結(jié)果是否反轉(zhuǎn)。
這里需要注意的一點是,調(diào)用 L.sort() 完成排序后,改變了要排序的列表的結(jié)構(gòu)
通過定義 key 和 cmp 都可以完成排序,但是這兩者之間有什么區(qū)別呢?cmp傳入的函數(shù)在整個排序過程中會調(diào)用多次,因為會進行多次比較,所以函數(shù)調(diào)用開銷較大,因此使用 key 的效率比 cmp 的效率要高。
sorted
L.sort():該函數(shù)的三個參數(shù)和 sorted() 的后三個參數(shù)含義是一致的,而需要特別注意的是,該函數(shù)只適用于列表,而非任意可以迭代的對象。cmp是比較函數(shù),接受兩個對象參數(shù) x 和 y,返回 負數(shù)(x<y),0(x=y),正數(shù)(x>y)
sorted()可以應(yīng)用于任意的可以迭代的對象,所以應(yīng)用范圍比L.sort() 廣泛的多,可以應(yīng)用于字符串,元組,列表,字典等可迭代對象。
即可以保留原列表,又能得到已經(jīng)排序好的列表sorted()操作方法如下:
>>> a = [5,7,6,3,4,1,2] >>> b = sorted(a) >>> a [5, 7, 6, 3, 4, 1, 2] >>> b [1, 2, 3, 4, 5, 6, 7]需要注意的是,該函數(shù)會返回一個排序后的列表,原有可迭代對象保持不變,這與 L.sort() 函數(shù)不同。然而,這會浪費較大的存儲空間,尤其是數(shù)據(jù)量較大時。所以,在列表進行排序時,需要考慮是否需要保存原列表,如果無需保存原列表,則優(yōu)先使用L.sort() 節(jié)省內(nèi)存空間,提高效率。
總結(jié):
L.sort() 函數(shù)只適用于列表排序,而sorted()函數(shù)適用于任意可以迭代的對象排序。
L.sort() 函數(shù)排序會改變原有的待排序列表,而sorted()函數(shù)則不會改變。所以在使用列表進行排序時,需要考慮是否需要保存原列表,如果無需保存原列表,則優(yōu)先使用L.sort() 節(jié)省內(nèi)存空間,提高效率。
兩個函數(shù)通過定義 key 和 cmp 都可以完成排序,但是 key 的效率要遠遠高于 cmp,所以要優(yōu)先使用 key 。
reversed()返回迭代器
max和min sum
list = [1,2,3,4,5,6,7,8,9,10]max = max(list) min = min(list) sum = sum(list)print("max:",max) print("min:",min) print("sum:",sum)輸出結(jié)果: max: 10 min: 1 sum: 55二維列表
表格數(shù)據(jù)的存取和讀取
在 Matlab 中我們可以用 save 和 lood 函數(shù)很方便的實現(xiàn)。類似的在 Python 中,我們可以用 numpy.save() 和 numpy.load() 函數(shù)達到類似的效果,并且還可以用 scipy.io.savemat() 將數(shù)據(jù)保存為 .mat 格式,用scipy.io.loadmat() 讀取 .mat 格式的數(shù)據(jù),達到可以和 Matlab 或者Octave 進行數(shù)據(jù)互動的效果.
numpy.save() 和 numpy.load()
numpy.save(arg_1,arg_2) 需要兩個參數(shù),arg_1 是文件名,arg_2 是要保存的數(shù)組. 如:
這個時候 Python 的當前工作路徑下就會多出 a.npy 和 b.npy 兩個文件,當然我們也可以給出具體的路徑,如 np.save(‘D:/PythonWork/a.npy’,a)
下面我們把保存的這兩個數(shù)據(jù)文件導(dǎo)入到Python :
data_a=np.load('a.npy') data_b=np.load('b.npy') print ('data_a \n',data_a,'\n the type is',type(data_a)) print ('data_b \n',data_a,'\n the type is',type(data_b))輸出結(jié)果為:
data_a [[1 2 3] [4 5 6]] the type is <class 'numpy.ndarray'>data_b [[1 2 3] [4 5 6]] the type is <class 'numpy.ndarray'>我們可以看到這一過程把原本為矩陣的 a 變?yōu)閿?shù)組型了,如果想同時保存 a b 到同一個文件,我們可以用 np.savez() 函數(shù),具體用法如下:
np.savez('ab.npz',k_a=a,k_b=b) c=np.load('ab.npz') print (c['k_a']) print (c['k_b'])輸出結(jié)果為:
[[1 2 3] [4 5 6]][[1 2 3] [4 5 6]]至此 Python 的當前工作路徑下就多了 a.mat 和 b.mat 這兩個文件.
下面我們用 Matlab 讀取這兩個文件:
見鏈接:https://blog.csdn.net/weixin_40446557/article/details/88219673
總結(jié)
以上是生活随笔為你收集整理的【Python基础知识-pycharm版】第三节-列表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python是动态_1.2. Pytho
- 下一篇: python 画三角函数_python,