這篇文章主要介紹python列表的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
成都創(chuàng)新互聯(lián)公司長期為上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為五河企業(yè)提供專業(yè)的成都網(wǎng)站制作、成都做網(wǎng)站,五河網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。1、序列(sequence)
1.1、基本概念
1.2、索引
1.3、實(shí)際運(yùn)用
2、列表(list)
2.1、 列表的概念
2.2、 列表的使用
3、切片
3.1、切片的概念
3.2、語法
3.3、 實(shí)際運(yùn)用
4、通用操作
4.1 操作與說明
4.2 實(shí)際運(yùn)用
5、修改列表
5.1、 直接修改
5.2、切片修改
5.3、 刪除 關(guān)鍵字
6、列表的方法
6.2.1、添加方法
6.2.2、刪除方法
6.2.4、反轉(zhuǎn)列表
6.2.1、排序
6.1 方法與說明
6.2 實(shí)際運(yùn)用
7、對(duì)條件語句的補(bǔ)充(for循環(huán))
7.1、基本概念
7.2、for 循環(huán)語法
7.2 range的用法
8、課后作業(yè)
8.1、 現(xiàn)在有 a = [1,2,3,4,5,6] 用多種方式實(shí)現(xiàn)列表的反轉(zhuǎn)([6,5,4,3,2,1]) 并寫出推導(dǎo)過程
8.2、給用戶9次機(jī)會(huì) 猜1 - 10 個(gè)數(shù)字隨機(jī)來猜數(shù)字。
8.3、有兩個(gè)列表 lst1 = [11, 22, 33] lst2 = [22, 33, 44]獲取內(nèi)容相同的元素
8.4、現(xiàn)在有8位老師,3個(gè)辦公室,要求將8位老師隨機(jī)的分配到三個(gè)辦公室中
9、附加(個(gè)人代碼練習(xí))
9.1、求1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100的值
9.2、計(jì)算下面數(shù)列的和值。 1/3+3/5+5/7+....+97/99
9.3、 輸入2個(gè)數(shù)值,判斷之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)
1、序列(sequence)
? 序列的索引其實(shí)在之前的第四篇博客的
字符串切片
中有說到過,這里再次提一下,因?yàn)樗?code>重要,重要,重要,很重要的事情要說3遍嘛。博客鏈接,感興趣的朋友可以點(diǎn)過去看看,當(dāng)然,本篇中也講述了列表的切片哦
1.1、基本概念
序列是Python中最基本的一種數(shù)據(jù)結(jié)構(gòu)。
? 序列用于保存
一組有序的數(shù)據(jù)
,所有的數(shù)據(jù)在序列當(dāng)中都有一個(gè)的位置(索引)并且序列中的數(shù)據(jù)會(huì)按照添加的順序來分配索引
? 序列就是名為容器的數(shù)據(jù)結(jié)構(gòu)
。序列(例如:列表,元組)和映射(例如:字典),序列中的每個(gè)元素都有一個(gè)編號(hào)
,而映射中的每個(gè)元素都有一個(gè)名字(鍵)
,而集合既不是序列類型的容器也不是映射的類型。
? 序列可以一些特殊的操作:索引,分片,加,乘,檢查某個(gè)元素是否屬于序列。除此之外python還可以計(jì)算序列的長度,找出較大函數(shù)和最小函數(shù)的內(nèi)建函數(shù)。
數(shù)據(jù)結(jié)構(gòu)指計(jì)算機(jī)中數(shù)據(jù)存儲(chǔ)的方式
序列的分類:
可變序列(序列中的元素可以改變):例如 列表(list)
不可變序列(序列中的元素不能改變):例如 字符串(str)元組(tuple)
1.2、索引
? 數(shù)組索引,數(shù)組索引機(jī)制指的是用方括號(hào)([])加序號(hào)的形式引用單個(gè)數(shù)組元素,它的用處很多,比如抽取元素,選取數(shù)組的幾個(gè)元素,甚至為其賦一個(gè)新值。
這里拿一個(gè)列表的索引展示一下,例如數(shù)組a=['a','b','c','d','e','f','g','h','i']
列表 | ‘a(chǎn)’ | ‘b’ | ‘c’ | ‘d’ | ‘e’ | 'f | ‘g’ | ‘h’ | ‘i’ |
---|---|---|---|---|---|---|---|---|---|
編號(hào)(正序) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
編號(hào)(反序) | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
1.3、實(shí)際運(yùn)用
以下就是數(shù)組通過索引來獲取單個(gè)數(shù)組的元素。
a=['a','b','c','d','e','f','g','h','i'] print(a[0]) # 運(yùn)行結(jié)果 》》》a print(a[4]) # 運(yùn)行結(jié)果 》》》e print(a[8]) # 運(yùn)行結(jié)果 》》》i print(a[-1]) # 運(yùn)行結(jié)果 》》》i
2、列表(list)
2.1、 列表的概念
列表是Python中的一個(gè)對(duì)象
列表的作用:
列表中可以保存多個(gè)有序的數(shù)據(jù)
列表是用來存儲(chǔ)對(duì)象的對(duì)象
? 列表是由一系列按特定順序排列的元素組成的,通常包含多個(gè)元素,
例如:字符串,整型數(shù)值,浮點(diǎn)型數(shù)值,列表,None,列表,字典等
。在python中,用方括號(hào)[ ] 表示列表,并用逗號(hào)分割其中的元素
2.2、 列表的使用
列表的創(chuàng)建:通過[]來創(chuàng)建一個(gè)空列表
a=[] print(a) # 運(yùn)行結(jié)果 》》》[]
列表的創(chuàng)建:直接賦值
a=['a','b','c','d','e','f','g','h','i'] print(a) # 運(yùn)行結(jié)果 》》》['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
3、切片
3.1、切片的概念
? 在第四講對(duì)字符串的切片中有講過字符串切片的用法,其實(shí)切片不止是字符串能用,列表list,元組tuple都能夠使用切片。
? 切片做的事情在已知的數(shù)據(jù)上取出想要的部分。切片是在可迭代對(duì)象的基礎(chǔ)上,取出任意長度的元素,同時(shí)取得范圍、頻次也是可以自定義的總結(jié):切片是取操作,不改變?cè)?/code>
切片是指從現(xiàn)有
可迭代對(duì)象(列表)
中獲得一個(gè)子列表通過切片來獲取指定的元素
3.2、語法
列表[起始 : 結(jié)束 : 步長] 左閉右開區(qū)間 取頭不取尾 步長默認(rèn)是1
詳細(xì)一點(diǎn)講就是:
1、左閉右開區(qū)間:在通過切片獲取元素時(shí),會(huì)包括起始位置的元素,不會(huì)包括結(jié)束位置的元素
2、起始位置和結(jié)束位置的索引可以不寫
如果省略結(jié)束位置, 則會(huì)從當(dāng)前的開始位置一直截取到最后
如果省略開始位置, 則會(huì)從第一個(gè)元素截取到結(jié)束的元素,但是不包括結(jié)束的元素
如果開始位置和結(jié)束位置都省略, 則則會(huì)從第一個(gè)元素開始截取到最后一個(gè)元素
3、步長表示每次獲取元素的間隔,默認(rèn)是1(可以省略不寫)
4、 步長不能是0,但可以是是負(fù)數(shù)
3.3、 實(shí)際運(yùn)用
個(gè)人對(duì)切片學(xué)習(xí)的心得:建議親自動(dòng)手敲幾遍,概念看再多總歸還不如多去實(shí)操幾遍來的效果好。
a=['a','b','c','d','e','f','g','h','i'] print(a[::]) # 運(yùn)行結(jié)果 》》》['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] # 運(yùn)行講解:起始位置、結(jié)束位置和步長都是空,既打印所有列表元素 print(a[0:3]) # 默認(rèn)步長為1 # 運(yùn)行結(jié)果 》》》['a', 'b', 'c'] # 運(yùn)行講解:a列表從第一位a取到第4位d,d不可取,所以只能取到c,既abc這3個(gè)元素 # 也可以是如下寫法,從 0 開始就可以把初始位置省略,效果如上 print(a[:3]) print(a[0:4:2]) # 初始位置為0可省略 # 運(yùn)行結(jié)果 》》》['a', 'c'] # 運(yùn)行講解:a列表從第一位a取到第5位e,e不可取,步長為2,只能取到ac print(a[-1:-4]) # 運(yùn)行結(jié)果 》》》[] # 運(yùn)行講解:步長不寫默認(rèn)為1,但初始和結(jié)束位置為負(fù),但初始大于結(jié)束位置,則什么值都取不到 print(a[-4:-1:1]) # 運(yùn)行結(jié)果 》》》['f', 'g', 'h'] # 運(yùn)行講解:初始小于結(jié)束位置,從倒數(shù)第4位f取到最后1位i,i不可取,步長為1 print(a[-1:-4:-1]) # 運(yùn)行結(jié)果 》》》['i', 'h', 'g'] # 運(yùn)行講解:從倒數(shù)第一位i取到倒數(shù)第4位e(e不可取)。 print(a[::-1]) # 運(yùn)行結(jié)果 》》》['i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a'] # 運(yùn)行講解:初始和結(jié)束位置都為空,步長為負(fù),則逆序打印
4、通用操作
4.1 操作與說明
操作 | 說明 |
---|---|
+ | 可以將兩個(gè)列表拼接成一個(gè)列表 |
* | 可以將列表重復(fù)指定的次數(shù) (注意2個(gè)列表不能夠做乘法,要和整數(shù)做乘法運(yùn)算) |
in | 用來檢查指定元素是否在列表當(dāng)中 |
not in | 用來檢查指定元素是否不在列表當(dāng)中 |
len() | 獲取列表中元素的個(gè)數(shù) |
max() | 獲取列表中較大值 |
min() | 獲取列表中最小值 |
list.index(x[, start[, end]]) | 第一個(gè)參數(shù) 獲取指定元素在列表中的位置 第二個(gè)參數(shù) 表示查找的起始位置 第三個(gè)參數(shù) 表示查找的結(jié)束位置 |
list.count(x) | 統(tǒng)計(jì)指定元素在列表中出現(xiàn)的個(gè)數(shù) |
list.copy(x) | 淺復(fù)制列表 |
cmp(list1, list2) operator模塊 | 比較兩個(gè)列表的元素 |
4.2 實(shí)際運(yùn)用
+的使用
a = [1, 2, 3] + [4, 5, 6] print(a) # 運(yùn)行結(jié)果 》》》[1, 2, 3, 4, 5, 6]
*的使用
a = [1, 2, 3] *3 print(a) # 運(yùn)行結(jié)果 》》》[1, 2, 3, 1, 2, 3, 1, 2, 3] # 錯(cuò)誤用法:列表乘列表,不用這樣使用 a = [1, 2, 3] * [4, 5, 6] #上面這種寫法會(huì)報(bào)錯(cuò)的哦,像這樣: # TypeError: can't multiply sequence by non-int of type 'list' # 類型錯(cuò)誤:不能用“列表”類型的非整數(shù)乘序列
in的使用
a = ['p','y','t','h','o','n'] print('y' in a) # 運(yùn)行結(jié)果 》》》True
not in的使用
a = ['p','y','t','h','o','n'] print('y' not in a) # 運(yùn)行結(jié)果 》》》 False
len() 的使用
a = ['p','y','t','h','o','n'] print(len(a)) # 運(yùn)行結(jié)果 》》》6
max()的使用
b = [1, 2, 3, 1] print(max(b)) # 運(yùn)行結(jié)果 》》》3
min()的使用
b = [1, 2, 3, 1] print(min(b)) # 運(yùn)行結(jié)果 》》》1
list.index的使用
a = ['p','y','t','h','o','n'] print(a.index('y')) # 運(yùn)行結(jié)果 》》》1 # 返回的結(jié)果就是當(dāng)前這個(gè)數(shù)據(jù)‘y’的索引
注:列表沒有find用法,使用find會(huì)報(bào)錯(cuò)的
list.count(x)
a = ['p','y','t','h','o','n','y'] print(a.count('y')) # 運(yùn)行結(jié)果 》》》2 # 查找有幾個(gè)這種元素
list.copy(x)
a = ['p','y','t','h','o','n'] print(a.copy()) # 運(yùn)行結(jié)果 》》》['p', 'y', 't', 'h', 'o', 'n']
cmp(list1, list2),這里用operator
模塊
# cmp是python2中的函數(shù),python3中以無法使用,可以用operator代替,效果一樣的 a = ['11','22','33'] b = ['22','33','44'] import operator print(operator.eq(a,b)) # 運(yùn)行結(jié)果 》》》False
這里有一種關(guān)于operator模塊的使用,感興趣的朋友可以了解一下
5、修改列表
通過切片來修改(起始就是給切片的內(nèi)容重新賦值,但是賦值的內(nèi)容必須是一個(gè)序列)
當(dāng)設(shè)置了步長時(shí),序列中元素的個(gè)數(shù)必須和切片中元素的個(gè)數(shù)保持一致
通過切片來刪除元素
del list[起始 : 結(jié)束]
list = []
5.1、 直接修改
a = ['孫悟空', '豬八戒', '魯班', '露娜', '安琪拉', '虞姬'] a[-1] = '亞瑟' print(a) # 運(yùn)行結(jié)果 》》》['孫悟空', '豬八戒', '魯班', '露娜', '安琪拉', '亞瑟']
5.2、切片修改
a = ['孫悟空', '豬八戒', '魯班', '露娜', '安琪拉', '虞姬'] print(a[3:5]) # 運(yùn)行結(jié)果 》》》['露娜', '安琪拉'] a[3:4] = '橘右京' print(a) # 運(yùn)行結(jié)果 》》》['孫悟空', '豬八戒', '魯班', '橘', '右', '京', '安琪拉', '虞姬'] a[3:5] = '李白' print(a) # 運(yùn)行結(jié)果 》》》['孫悟空', '豬八戒', '魯班', '李', '白', '京', '安琪拉', '虞姬'] a[0:0] = ['牛魔'] print(a) # 運(yùn)行結(jié)果 》》》['牛魔', '孫悟空', '豬八戒', '魯班', '李', '白', '京', '安琪拉', '虞姬'] a[::2] = ['凱','凱','凱','凱','凱'] print(a) # 運(yùn)行結(jié)果 》》》['凱', '孫悟空', '凱', '魯班', '凱', '白', '凱', '安琪拉', '凱'] # 取到多少個(gè)數(shù)據(jù),替換的數(shù)據(jù)就得有多少 print(a) print(a.index('安琪拉')) # 運(yùn)行結(jié)果 》》》7
5.3、 刪除 關(guān)鍵字
a = ['孫悟空', '豬八戒', '魯班', '露娜', '安琪拉', '虞姬'] del a[-1] # 運(yùn)行結(jié)果 》》》['孫悟空', '豬八戒', '魯班', '露娜', '安琪拉']
6、列表的方法
6.1 方法與說明
方法 | 說明 |
---|---|
append() | 像列表的最后添加一個(gè)元素 |
insert(arg1,arg2) | 像列表指定位置插入一個(gè)元素 參數(shù)1:要插入的位置 參數(shù)2:要插入的元素 |
extend(iterable) | 使用一個(gè)新的序列來擴(kuò)展當(dāng)前序列 (它會(huì)將該序列的中元素添加到列表中) 參數(shù)需要傳遞 |
pop() | 根據(jù)索引刪除并返回指定元素 |
remove() | 刪除指定元素 (如果相同值的元素有多個(gè),只會(huì)刪除第一個(gè)) |
reverse() | 翻轉(zhuǎn)列表 |
sort(key=None,reverse=False) | 用來對(duì)列表中的元素進(jìn)行排序 reverse:True反序;False 正序 |
6.2 實(shí)際運(yùn)用
6.2.1、添加方法
append()
# list.append() 向類表中最后的位置插入一個(gè)元素 a = ['孫悟空', '豬八戒', '魯班', '露娜', '安琪拉', '虞姬'] a.append('凱') print(a) # 運(yùn)行結(jié)果 》》》['孫悟空', '豬八戒', '魯班', '露娜', '安琪拉', '虞姬', '凱']
insert(arg1,arg2)
# list.insert() 向列表中的指定位置插入一個(gè)元素,第一個(gè)參數(shù)是要插入的位置,第二個(gè)參數(shù)是要插入的內(nèi)容 a = ['孫悟空', '豬八戒', '魯班', '露娜', '安琪拉', '虞姬'] a.insert(4, '亞瑟') print(a) # 運(yùn)行結(jié)果 》》》['孫悟空', '豬八戒', '魯班', '露娜', '亞瑟', '安琪拉', '虞姬']
extend(iterable)
# list.extend() 使用新的序列來擴(kuò)展當(dāng)前序列,就是添加多個(gè)元素 a = ['孫悟空', '豬八戒', '魯班', '露娜', '安琪拉', '虞姬'] a.extend(['亞瑟', '凱']) print(a) # 運(yùn)行結(jié)果 》》》['孫悟空', '豬八戒', '魯班', '露娜', '安琪拉', '虞姬', '亞瑟', '凱']
6.2.2、刪除方法
pop()
# list.pop() 根據(jù)索引刪除并返回元素, 如果不傳遞索引,默認(rèn)刪除最后一個(gè) a = ['孫悟空', '豬八戒', '魯班', '露娜', '安琪拉', '虞姬'] a = a.pop() print(a) 運(yùn)行結(jié)果 》》》虞姬
remove()
# list.remove() 刪除指定的元素 a = ['孫悟空', '豬八戒', '魯班', '露娜', '安琪拉', '虞姬'] a.remove('魯班') print(a) 運(yùn)行結(jié)果 》》》['孫悟空', '豬八戒', '露娜', '安琪拉', '虞姬']
6.2.4、反轉(zhuǎn)列表
reverse()
a = ['孫悟空', '豬八戒', '魯班', '露娜', '安琪拉', '虞姬'] a.reverse() print(a) 運(yùn)行結(jié)果 》》》['虞姬', '安琪拉', '露娜', '魯班', '豬八戒', '孫悟空']
6.2.1、排序
sort(key=None,reverse=False)
# list.sort() 默認(rèn)是正序排序 他有一個(gè)參數(shù)reverse a = [4,5,2,7,1,0,5,8] a.sort(reverse=True) print(a) 運(yùn)行結(jié)果 》》》[8, 7, 5, 5, 4, 2, 1, 0]
7、對(duì)條件語句的補(bǔ)充(for循環(huán))
7.1、基本概念
? for 語句是 Python 中執(zhí)行迭代的兩個(gè)語句之一,另一個(gè)語句是 while。while在之前的博客里有講過,這里我們補(bǔ)充介紹一下for循環(huán)的用法。
? Python 中,for 循環(huán)用于遍歷一個(gè)迭代對(duì)象的所有元素。循環(huán)內(nèi)的語句段會(huì)針對(duì)迭代對(duì)象的每一個(gè)元素項(xiàng)目都執(zhí)行一次。這里我們用的迭代對(duì)象就是列表和range。
7.2、for 循環(huán)語法
字符串
for i(迭代變量) in 'Python': 循環(huán)體
range
for i(迭代變量) in range(1,9): 循環(huán)體
序列
for i(迭代變量) in 序列(遍歷的規(guī)則): 循環(huán)體
7.2 range的用法
for 迭代變量 in range ( i, j [,k ]):
參數(shù)說明:
這個(gè)也是左閉右開區(qū)間,所以終止值不可取
i: 初始值(默認(rèn)為‘0’)
j: 終止值(默認(rèn)為‘1’)
k: 步長值,即每次重復(fù)操作時(shí)比上一次操作所增長的數(shù)值。(默認(rèn)為‘1’)
執(zhí)行過程:
第一步:將 i 值傳遞給 ‘迭代變量’,然后執(zhí)行一次內(nèi)部語句;
第二步:在 i 的基礎(chǔ)上 + k 再次傳遞給 ‘迭代變量’,如果 ‘迭代變量’ 的值小于 ‘j’ 的值,則再次執(zhí)行內(nèi)部語句,否則退出for循環(huán)。
詳情如下:
for i in range(9): print(i)
運(yùn)行結(jié)果如圖;
8、課后作業(yè)
8.1、 現(xiàn)在有 a = [1,2,3,4,5,6] 用多種方式實(shí)現(xiàn)列表的反轉(zhuǎn)([6,5,4,3,2,1]) 并寫出推導(dǎo)過程
# 第一種方法,使用append a = [1,2,3,4,5,6] b = [] for i in a: b.append(a[6-i]) print(b) # 第二種方法,切片的運(yùn)用 a = [1,2,3,4,5,6] print(a[::-1]) # 第三種方法,反轉(zhuǎn)列表 a = [1,2,3,4,5,6] a.reverse() print(a) # 第四種方法,排序 a = [1,2,3,4,5,6] a.sort(reverse=True) print(a)
運(yùn)行結(jié)果如下:
知識(shí)點(diǎn)運(yùn)用及編寫思路:
? 第一種方法用到了列表方法append和for循環(huán)的配合,每一次運(yùn)行都將列表a中的值添加給b,達(dá)到逆序的效果。
? 第二種方法是切片的逆序打印,詳情可以看上面切片的介紹及運(yùn)用。
? 第三種和第四張方法都是列表方法的運(yùn)用,不過第三種不管里面的元素是什么類型的都可以逆序打印,但第四張只能針對(duì)像這種原本就是元素從小到大的列表,其他的就達(dá)不到逆序的效果。
8.2、給用戶9次機(jī)會(huì) 猜1 - 10 個(gè)數(shù)字隨機(jī)來猜數(shù)字。
# 第一種 list1 = [1,2,3,4,5,6,7,8,9,10] list2=[] print('現(xiàn)在我們來猜數(shù)字,給你9次機(jī)會(huì)哦') for i in range(1,10): a = int(input('請(qǐng)輸入1 - 10中的數(shù)字:')) if a in list1: print(f'你猜錯(cuò)啦,不是{a}') list2.append(a) else: print('哎呀,要猜1到10內(nèi)的數(shù)字哦?。?!') continue else: for a in list1: if a not in list2: d = a print(f'哈哈哈,你9次都沒猜對(duì)哦?。?!應(yīng)該是pt95bnf才對(duì)哦!') # 第二種 list1 = [1,2,3,4,5,6,7,8,9,10] list2=[] print('現(xiàn)在我們來猜數(shù)字,給你9次機(jī)會(huì)哦') i=1 while i<=10: a = int(input('請(qǐng)輸入1 - 10中的數(shù)字:')) if a in list1: print(f'你猜錯(cuò)啦,不是{a}') list2.append(a) i+=1 else: print('哎呀,你沒有按照規(guī)范輸入哦!??!') continue else: for a in list1: if a not in list2: d = a continue print(f'哈哈哈,你9次都沒猜對(duì)哦?。?!應(yīng)該是3ldfxz9才對(duì)哦!') # 第三種 最終簡化版,建議使用此方法 list1 = [1,2,3,4,5,6,7,8,9,10] print('現(xiàn)在我們來猜數(shù)字,給你9次機(jī)會(huì)哦') i=1 while i<10: a = int(input('請(qǐng)輸入1 - 10中的數(shù)字:')) if a in list1: print(f'你猜錯(cuò)啦,不是{a}') list1.remove(a) i+=1 else: print('哎呀,你沒有按照規(guī)范輸入哦?。?!') continue else: print(f'哈哈哈,你9次都沒猜對(duì)哦?。?!應(yīng)該是{list1[0]}才對(duì)哦!')
運(yùn)行結(jié)果如下(最終方法的運(yùn)行)
知識(shí)點(diǎn)運(yùn)用及編寫思路:
? 這3種方法也是循序漸進(jìn)的,由
Cheney老師以及群里的各位大佬
指點(diǎn)改進(jìn)的
? 第一種方法中規(guī)中矩,就是利用for循環(huán),循環(huán)9次,讓用戶每次都猜一次,我們就將用戶猜的值添加給列表list2,最后9次循環(huán)之后將list1與list2的值進(jìn)行判斷,最后輸出用戶沒有猜到的值。
? 第二種方法就是再第一題的基礎(chǔ)上加上了判斷,限定用戶必須猜1~10之間的數(shù)字。
? 上述的2種方法也能達(dá)到效果,但是還是不夠簡便,所以在聽取了群里的大佬西安聶澤雨
的意見后改的,使用remove方法將用戶猜的數(shù)字都從列表中刪除,這樣就能達(dá)到與上面2種方法相同的效果,也簡化了代碼。
? 在此,還要非常感謝一下Cheney老師以及群里的大佬的指點(diǎn)與幫助,讓我學(xué)習(xí)到了更多的代碼知識(shí)以及思路。學(xué)無止境,希望各位再觀看完我的博客后,能給我的不足地方指出,謝謝。
下面是我原本寫的,解題思路稍微有點(diǎn)偏差,也可以借鑒一下的
讓用戶9次都猜不對(duì),前2種方法都有一點(diǎn)點(diǎn)問題,可以結(jié)合第三種一起理解一下
# 讓用戶9次都猜不對(duì),然后每一次都輸出一個(gè)值 # 第一種方法 list1 = [1,2,3,4,5,6,7,8,9,10] for i in range(1,10): a = int(input('請(qǐng)輸入1 - 10中的數(shù)字:')) b = list1[a+1] print(f'你猜錯(cuò)啦,應(yīng)該是才對(duì)哦!') else: print('哈哈哈,你9次都沒猜對(duì)哦?。?!') # 第二種方法 list1 = [1,2,3,4,5,6,7,8,9,10] i=1 while i<10: a = int(input('請(qǐng)輸入1 - 10中的數(shù)字:')) if a in list1: b = list1[a+1] print(f'你猜錯(cuò)啦,應(yīng)該是才對(duì)哦!') i += 1 else: print('哎呀,要猜1到10內(nèi)的數(shù)字哦?。。?#39;) continue else: print('哈哈哈,你9次都沒猜對(duì)哦!??!') # 第三種方法 import random i = 1 while i<10: a = int(input('請(qǐng)輸入1 - 10中的數(shù)字:')) if a>=1 and a<=10: b = random.randint(1, 10) while (a == b): b = random.randint(1, 10) if (a != b): continue print(f'你猜錯(cuò)啦,應(yīng)該是才對(duì)哦!') i+=1 else: print('哎呀,要猜1到10內(nèi)的數(shù)字哦!??!') continue else: print('哈哈哈,你一次都沒猜對(duì)!??!')
運(yùn)行結(jié)果如下(這里只展示第3種方法的效果,還有2種也差不多):
知識(shí)點(diǎn)運(yùn)用及編寫思路:
? 此代碼是我在理解錯(cuò)題目意思后寫的,讓用戶9次都猜不對(duì),每一次都輸出一個(gè)數(shù)字。
? 這里我寫了3種方法,思路是循序漸進(jìn)的,應(yīng)該更好理解。
? 首先我們第一種方法
用到的就是for循環(huán)和列表的運(yùn)用,先創(chuàng)建一個(gè)列表,里面的元素就是1~10的數(shù)字,然后不管用戶輸入什么數(shù)字,我這邊都加上2輸出,這里因?yàn)樗饕菑?開始,所以list1[a+1]就能達(dá)到這種效果,但是我發(fā)現(xiàn)這個(gè)方法又不足,先不說,我們輸出的數(shù)字不隨機(jī),再有就是我不管輸入什么數(shù)字都行,缺少了一個(gè)判斷,所以我又進(jìn)行了更改
?第二種方法
我就在第一種方法加上了if判斷,但是我這個(gè)時(shí)候又遇到一個(gè)問題,如果接著用for循環(huán),就算我輸不是1 ~ 10 內(nèi)的數(shù)字,然后他總的循環(huán)只能有9次,所以不符合我的預(yù)期效果,這個(gè)時(shí)候我想到了while循環(huán),并將其添加進(jìn)去,這時(shí)我就限定了用戶只能輸入1 ~ 10內(nèi)的數(shù)字。
?第三種方法
,是我想讓我們輸出的數(shù)字也隨機(jī),這是我想到了random模塊,使用這個(gè)模塊不就能隨機(jī)了能生成隨機(jī)數(shù)了嘛,但是我又想到這個(gè)還有一個(gè)問題,就是他有很大概率讓用戶懵中,所以我這又給他加了個(gè)循環(huán),使其就算猜中了也沒用,猜中我就換一個(gè)隨機(jī)數(shù)就好了。最后的效果就如上圖了。
8.3、有兩個(gè)列表 lst1 = [11, 22, 33] lst2 = [22, 33, 44]獲取內(nèi)容相同的元素
# 第一種方法 while循環(huán) lst1 = [11, 22, 33] lst2 = [22, 33, 44] a = 0 c = '相同的元素為:' while a<3: b=0 while b<3: if lst1[a]==lst2[b]: c+=f' {lst1[a]}' b +=1 a +=1 print(c) # 第二種方法 for循環(huán) lst1 = [11, 22, 33] lst2 = [22, 33, 44] c = '相同的元素為:' for i in range(0,3): for j in range(0,3): if lst1[i]==lst2[j]: c+=f' {lst1[i]}' print(c)
運(yùn)行結(jié)果如下:
知識(shí)點(diǎn)運(yùn)用及編寫思路:
? 這題比較容易,獲取2個(gè)列表相同的元素,我們只要用一下循環(huán)嵌套就好了,外循環(huán)和內(nèi)循環(huán)都是循環(huán)3次,外循環(huán)就是lst1的元素?cái)?shù)量,內(nèi)循環(huán)是lst2的元素?cái)?shù)量,之后那list1的每一個(gè)元素都與list2的元素一一對(duì)比判斷就行了,相同的復(fù)制給c,最后直接輸出c即可。
8.4、現(xiàn)在有8位老師,3個(gè)辦公室,要求將8位老師隨機(jī)的分配到三個(gè)辦公室中
# 第一種方法 while循環(huán) import random a = 1 while a<9: b = random.randint(1,3) print(f'第{a}老師分配的辦公室為:第間辦公室') a+=1 # 第二種方法 for循環(huán) import random for i in range (1,9): b = random.randint(1,3) print(f'第{i}老師分配的辦公室為:第間辦公室')
運(yùn)行結(jié)果如下:
知識(shí)點(diǎn)運(yùn)用及編寫思路:
? 這題說白了就是random模塊與循環(huán)之間的使用,將老師的數(shù)量作為迭代變量,也就是循環(huán)的次數(shù),然后使用random模塊生產(chǎn)隨機(jī)的1~3之間的數(shù)字,然后就是輸出啦。
9、附加(個(gè)人代碼練習(xí))
9.1、求1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100的值
# 求1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100的值 # while循環(huán) i=1 sum=0 while i<101: if i%2==0: sum-=1/i elif i%2!=0: sum+=1/i i+=1 print(sum) # for循環(huán) sum=0 for i in range(1,101): if i%2==0: sum-=1/i elif i%2!=0: sum+=1/i print(sum)
運(yùn)行結(jié)果:
9.2、計(jì)算下面數(shù)列的和值。 1/3+3/5+5/7+…+97/99
# 計(jì)算下面數(shù)列的和值。 1/3+3/5+5/7+....+97/99 # while循環(huán) i,j,sum = 1,3,0 while i<98: sum+=i/j j+=2 i+=2 print(sum) # for循環(huán) j,sum=3,0 for i in range(1,98,2): sum += i / j j+=2 print(sum)
運(yùn)行結(jié)果:
9.3、 輸入2個(gè)數(shù)值,判斷之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)
# 輸入2個(gè)數(shù)值,判斷之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù) c=[int(input('輸入第一個(gè)數(shù):')),int(input('輸入第二個(gè)數(shù):'))] c.sort(reverse=False) #保證2個(gè)數(shù)以升序方式排列 a,b=c[0],c[1] while a <= b: i = 2 if a % 2 == 0: n = a / 2 else: n = (a - 1) / 2 while i <= n: if a % i == 0: break i += 1 else: print(a, '是素?cái)?shù)') a += 1
運(yùn)行結(jié)果:
以上是“python列表的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)站欄目:python列表的示例分析-創(chuàng)新互聯(lián)
URL鏈接:http://m.rwnh.cn/article22/cedgcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站建設(shè)、網(wǎng)站排名、網(wǎng)站收錄、服務(wù)器托管、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
移動(dòng)網(wǎng)站建設(shè)知識(shí)