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