第七章 組合數(shù)據(jù)-1列表List
Python 編程語(yǔ)言中有四種組合數(shù)據(jù)類型:
??? 列表(List)是一種有序和可更改的集合,列表用方括號(hào)標(biāo)識(shí)[],允許重復(fù)的成員。
??? 元組(Tuple)是一種有序且不可更改的集合,元組用小括號(hào)標(biāo)識(shí)(),允許重復(fù)的成員。
??? 集合(Set)是一個(gè)無(wú)序和無(wú)索引的集合,集合用大括號(hào)標(biāo)識(shí){},沒(méi)有重復(fù)的成員。
??? 詞典(Dictionary)是一個(gè)無(wú)序,可變和有索引的集合,詞典用大括號(hào)標(biāo)識(shí){},沒(méi)有重復(fù)的成員。
其中有序就是可以通過(guò)下標(biāo)訪問(wèn)數(shù)據(jù),有索引就是可以通過(guò)索引值來(lái)訪問(wèn)數(shù)據(jù)。
7.1 列表List
列表是用于存儲(chǔ)一組數(shù)據(jù)的結(jié)構(gòu),用方括號(hào)括起來(lái)、逗號(hào)分隔的數(shù)據(jù)類型。每個(gè)數(shù)據(jù)都分配一個(gè)數(shù)字標(biāo)識(shí)它的位置,稱為下標(biāo)或索引,第一個(gè)下標(biāo)是0,第二個(gè)下標(biāo)是1;下標(biāo)也可以為負(fù)數(shù),-1表示倒數(shù)第一個(gè)元素的索引,-2表示倒數(shù)第2個(gè)元素的索引。列表的元素可以是任何類型的,但使用時(shí)通常各個(gè)元素的類型是相同的。列表(List)操作方法包含創(chuàng)建、訪問(wèn)、刪除、排序、切片,乘等操作方法。?
list_a = ['a', 'b', 3, 8.9]?? #創(chuàng)建一個(gè)含有四個(gè)元素的列表
print(list_a)???????????? #顯示list_a['a', 'b', 3, 8.9]
print(list_a[0])????????? #顯示字符‘a(chǎn)’
print(list_a[-4])???????? #顯示字符‘a(chǎn)’
list_a[-4]=102249???????? #修改list_a[-4] 的值為102249
print(list_a)???????????? #顯示list_a[102249, 'b', 3, 8.9]
#顯示列表list_a的所有元素 102249 b 3 8.9
for _ in list_a:
??? print(_,end=" ")
print()
list_b = [1,3,1,4]
list_c = []??????????????? #空列表
list_c = list_a + list_b?? #連接兩個(gè)列表
print(list_c)????????????? #顯示list_c [102249, 'b', 3, 8.9, 1, 3, 1, 4]
print(list_b)????????????? #顯示list_b [1, 3, 1, 4]
del list_b[0]????????????? #刪除list_b[0]
print(list_b,list_b[0])??? #顯示list_b,list_b[0] [3, 1, 4] 3
del list_b???????????????? #刪除list_b
list_c = list_a * 2??????? #重復(fù)list_a元素2次
print(list_c)????????????? #顯示list_c [102249, 'b', 3, 8.9, 102249, 'b', 3, 8.9]
?
運(yùn)行結(jié)果如下:
['a', 'b', 3, 8.9]
a
a
[102249, 'b', 3, 8.9]
102249 b 3 8.9
[102249, 'b', 3, 8.9, 1, 3, 1, 4]
[1, 3, 1, 4]
[3, 1, 4] 3
[102249, 'b', 3, 8.9, 102249, 'b', 3, 8.9]
list內(nèi)置函數(shù)
內(nèi)置函數(shù)????????描述
len()????????????????計(jì)算列表的長(zhǎng)度,即計(jì)算列表元素的個(gè)數(shù)
max()? ? ? ? ? ? ? ?返回列表元素中的最大值,列表元素必須是同一類型且可比較。
min()? ? ? ? ? ? ? ?返回列表元素中的最小值,列表元素必須是同一類型且可比較。
sum()? ? ? ? ? ? ? ?計(jì)算列表所有元素的和,其元素類型必須是數(shù)值型的(整數(shù)、浮點(diǎn)數(shù))
sorted()? ? ? ? ? ? ? ?返回一個(gè)排序的列表,但并不改變?cè)斜怼?/p>
list()? ? ? ? ? ? ? ?生成一個(gè)空列表,或把其它類型數(shù)據(jù)轉(zhuǎn)換成list。
any()? ? ? ? ? ? ? ?只要列表中有一個(gè)元素是True就返回True。
all()? ? ? ? ? ? ? ?只有列表所有元素為True才返回True。
函數(shù)是一系列語(yǔ)句的集合,調(diào)用后可以返回一個(gè)或一些值??梢越o它傳遞0個(gè)或多個(gè)參數(shù),這些參數(shù)可能被用于函數(shù)內(nèi)部的執(zhí)行過(guò)程。方法就是定義在類內(nèi)部的函數(shù),方法是與某個(gè)對(duì)象關(guān)聯(lián)的。方法的調(diào)用方法就是在對(duì)象后面加 點(diǎn).,再加方法名稱,我懷疑你沒(méi)看到我在點(diǎn)字后面寫的.,所以我再多寫幾個(gè).........。就是這樣的......................................小點(diǎn)點(diǎn)們。讓我想起花園寶寶中的小點(diǎn)點(diǎn),還有小豆豆,我也不知道哪個(gè)是小點(diǎn)點(diǎn),哪個(gè)是小豆豆。剛才找小點(diǎn)點(diǎn)小豆豆圖的時(shí)候還看了一集 In the Night Garden。




講列表編程前看個(gè)例子吧,不是看,是你自己做,閱讀理解來(lái)了!
最大的麥穗(小學(xué)課文)
古希臘有一位大學(xué)者,名叫蘇格拉底。一天,他帶領(lǐng)幾個(gè)弟子來(lái)到一塊麥地邊。地里滿是沉甸甸的麥穗。蘇格拉底對(duì)弟子們說(shuō)“你們要去地里挑一個(gè)最大的麥穗,只許進(jìn)不許退,我在麥地的盡頭等你們?!?/p>
弟子們聽(tīng)懂了老師的要求后,就走進(jìn)了麥地。
地里到處都是大麥穗,哪一個(gè)才是最大的呢?弟子們埋頭向前走??纯催@一株,搖了搖頭;看看那一株,又搖了搖頭。他們總認(rèn)為最大的那一穗還在前面呢。雖然,弟子們也試著摘了幾穗,但并不滿意,便隨手扔掉了。他們總以為機(jī)會(huì)還很多,完全沒(méi)有必要過(guò)早地定奪。
弟子們一邊低著頭往前走,一邊用心地挑挑揀揀,經(jīng)過(guò)了很長(zhǎng)一段時(shí)間。
突然,大家聽(tīng)到了蘇格拉底蒼老的如同洪鐘一般的聲音:“你們已經(jīng)到頭了。”這時(shí),兩手空空的弟子們才如夢(mèng)初醒,他們回頭望了望麥壟,無(wú)數(shù)株小麥搖晃著腦袋,似乎在為他們惋惜。
蘇格拉底對(duì)弟子們說(shuō):“這塊麥地里肯定有一穗是最大的,但你們未必能碰見(jiàn)它;即使碰見(jiàn)了,也未必能作出準(zhǔn)確的判斷。因此最大的一穗就是你們剛剛摘下的?!?/p>
蘇格拉底的弟子們聽(tīng)了老師的話,悟出了這樣一個(gè)道理:人的一生仿佛也在麥地中行走,也在尋找那最大的一穗。有的人見(jiàn)到了顆粒飽滿的“麥穗”,就不失時(shí)機(jī)地摘下它;有的人則東張西望,一再地錯(cuò)失良機(jī)。當(dāng)然,追求應(yīng)該是最大的,但把眼前的一穗拿在手中,這才是實(shí)實(shí)在在的。
?
我們要做的就是模仿上面的事件,找到最大的麥穗。首先輸入麥穗數(shù)量比如100,然后輸入每個(gè)麥穗的重量,最后求出最大的麥穗。思考、編程去吧!
參考答案:不知道是真是假呢!
import time
starttime = time.time()
print("一起尋找最大的麥穗")
print(".......................")
EarofWheat=[]
n=int(input("麥穗數(shù)量:"))
for i in range(1,n+1):
??? weight=float(input("第"+str(i)+"個(gè)麥穗重量:"))
??? EarofWheat.append(weight)
print("最大的麥穗是",format(max(EarofWheat),".2f"))
endtime = time.time()
print("花費(fèi)時(shí)間:",endtime-starttime,"秒")
?
運(yùn)行結(jié)果如下:
一起尋找最大的麥穗
.......................
麥穗數(shù)量:6
第1個(gè)麥穗重量:3
第2個(gè)麥穗重量:8
第3個(gè)麥穗重量:4
第4個(gè)麥穗重量:6
第5個(gè)麥穗重量:1
第6個(gè)麥穗重量:9
最大的麥穗是 9.00
花費(fèi)時(shí)間: 13.10537338256836 秒
程序里需要使用 time 模塊,每個(gè)時(shí)間戳都以自從1970年1月1日午夜經(jīng)過(guò)了多長(zhǎng)時(shí)間來(lái)表示。函數(shù)time.time()用于獲取當(dāng)前時(shí)間戳。時(shí)間戳單位最適于做日期運(yùn)算。但是1970年之前的日期就無(wú)法以此表示了。太遙遠(yuǎn)的日期也不行,UNIX和Windows只支持到2038年。這是為啥呢?我也不知道,不知道......