日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python基础知识-pycharm版】第三节-列表

發(fā)布時間:2024/7/5 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python基础知识-pycharm版】第三节-列表 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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ā)中及其有用。語法格式為:

range([start],end ,[step]) start 參數(shù):可選,表示起始數(shù)字。默認是 0 end 參數(shù):必選,表示結(jié)尾數(shù)字。 step 參數(shù):可選,表示步長,默認為 1e = list(range(0,10,2)) print(e) #結(jié)果:[0, 2, 4, 6, 8]f = list(range(10,0,-1)) print(f) #結(jié)果:[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]g = list(range(-10,-30,-2)) print(g) #結(jié)果:[-10, -12, -14, -16, -18, -20, -22, -24, -26, -28]

四、推導(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"項。

>>>students = [‘Cleese‘ , ‘Palin‘ , ‘Jones‘ , ‘Idle‘] >>> students.append(‘Gavin‘) >>> print(students) [‘Cleese‘, ‘Palin‘, ‘Jones‘, ‘Idle‘, ‘Gavin‘]

+方法
地址會發(fā)生變化,也就是創(chuàng)建了新的列表對象

insert()
在列表中插入元素:使用方法insert()可在列表的任何位置添加新元素,需要制定新元素的索引和值。列表名.insert(索引,‘值’)
insert()方法是指在某個特定位置前面增加一個數(shù)據(jù)項。
例如:在students原始列表中"Palin"前面增加"Gilliam"。

>>> students = [‘Cleese‘ , ‘Palin‘ , ‘Jones‘ , ‘Idle‘] >>> students.insert(1, ‘Gilliam‘) >>> print(students) [‘Cleese‘, ‘Gilliam‘, ‘Palin‘, ‘Jones‘, ‘Idle‘]

extend()方法
將目標列表的所有元素添加到本列表的尾部,屬于原地操作,不創(chuàng)建新的列表對象
例如:在例1基礎(chǔ)上,students列表末尾繼續(xù)增加"Kavin"與"Jack"和"Chapman"三項。

>>> students = [‘Cleese‘ , ‘Palin‘ , ‘Jones‘ , ‘Idle‘] >>> students.insert(1, ‘Gilliam‘) >>> print(students) [‘Cleese‘, ‘Gilliam‘, ‘Palin‘, ‘Jones‘, ‘Idle‘]

del刪除
del的書寫方式是 del list[i] 根據(jù)索引刪除,也就是根據(jù)位置刪除元素。

L = [1,2,2,3,4,5,6,7,8,9] del L[0],L[3:6] print(L)>>>[2, 2, 3, 7, 8, 9] #注意上面的操作,是先刪除L[0]之后重新排序L = [1,2,3] del L print(L)錯誤:name 'L' is not defined,#表示已經(jīng)被刪除

pop的使用
pop的書寫方式是 list.pop[i] 根據(jù)索引返回對應(yīng)位置的元素,列表也刪除相對于位置的元素。list.pop()刪除列表最后一個元素,并返回這個元素。

L = [1,2,2,3,4,5,6,7,8,9] a = L.pop(2) print(L) print(a)>>>[1, 2, 3, 4, 5, 6, 7, 8, 9] >>>2L = [6,7,8,9] L.pop() print(L)[6, 7, 8]

remove的使用
remove的書寫方式是 list.remove(value) 刪除第一個出現(xiàn)的對應(yīng)元素,注意不是根據(jù)索引刪除。而是確定列表種有某個元素,刪除它。

L = [1,2,2,3,4,5,6,7,8,9]L.remove(2)print(L)>>>[1, 2, 3, 4, 5, 6, 7, 8, 9]L.remove(2)print(L)>>>[1, 3, 4, 5, 6, 7, 8, 9]

刪除的本質(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 list

count()獲得指定元素在列表中出現(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) 0

len()返回列表長度

#!/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”。

>>> alist [1, 3, 5, 5.5, 3, 5, 1, 3, 5] >>> 3 in alist True >>> 18 in alist 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)

A = [3,6,1,5,4,2] A.sort() // [1, 2, 3, 4, 5, 6] student = [['Tom', 'A', 20], ['Jack', 'C', 18], ['Andy', 'B', 11]] student.sort(key=lambda student: student[2])學(xué)生列表中包含列表,每個列表是學(xué)生的姓名、成績以及年齡,排序過程中指定了key為學(xué)生的年齡,所以排序的結(jié)果為:[['Andy', 'B', 11], ['Jack', 'C', 18], ['Tom', 'A', 20]] student = [['Tom', 'A', 20], ['Jack', 'C', 18], ['Andy', 'B', 11]] student.sort(cmp=lambda x, y: x[2] - y[2])

通過定義 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ù)組. 如:

import numpy as np a=np.mat('1,2,3;4,5,6') b=np.array([[1,2,3],[4,5,6]]) np.save('a.npy',a) np.save('b.npy',b)

這個時候 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。