python列表的示例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹python列表的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

成都創(chuàng)新互聯(lián)公司長(zhǎng)期為上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為五河企業(yè)提供專(zhuān)業(yè)的成都網(wǎng)站制作、成都做網(wǎng)站,五河網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

python:列表

  • 1、序列(sequence)


    • 1.1、基本概念

    • 1.2、索引

    • 1.3、實(shí)際運(yùn)用

  • 2、列表(list)


    • 2.1、 列表的概念

    • 2.2、 列表的使用

  • 3、切片


    • 3.1、切片的概念

    • 3.2、語(yǔ)法

    • 3.3、 實(shí)際運(yùn)用

  • 4、通用操作


    • 4.1 操作與說(shuō)明

    • 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 方法與說(shuō)明

    • 6.2 實(shí)際運(yùn)用


  • 7、對(duì)條件語(yǔ)句的補(bǔ)充(for循環(huán))


    • 7.1、基本概念

    • 7.2、for 循環(huán)語(yǔ)法

    • 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]) 并寫(xiě)出推導(dǎo)過(guò)程

    • 8.2、給用戶9次機(jī)會(huì) 猜1 - 10 個(gè)數(shù)字隨機(jī)來(lái)猜數(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í)在之前的第四篇博客的字符串切片中有說(shuō)到過(guò),這里再次提一下,因?yàn)樗?code>重要,重要,重要,很重要的事情要說(shuō)3遍嘛。博客鏈接,感興趣的朋友可以點(diǎn)過(guò)去看看,當(dāng)然,本篇中也講述了列表的切片哦

1.1、基本概念

  • 序列是Python中最基本的一種數(shù)據(jù)結(jié)構(gòu)。

?  序列用于保存一組有序的數(shù)據(jù),所有的數(shù)據(jù)在序列當(dāng)中都有一個(gè)的位置(索引)并且序列中的數(shù)據(jù)會(huì)按照添加的順序來(lái)分配索引
?   序列就是名為容器的數(shù)據(jù)結(jié)構(gòu)。序列(例如:列表,元組)和映射(例如:字典),序列中的每個(gè)元素都有一個(gè)編號(hào),而映射中的每個(gè)元素都有一個(gè)名字(鍵),而集合既不是序列類(lèi)型的容器也不是映射的類(lèi)型。
?   序列可以一些特殊的操作:索引,分片,加,乘,檢查某個(gè)元素是否屬于序列。除此之外python還可以計(jì)算序列的長(zhǎng)度,找出較大函數(shù)和最小函數(shù)的內(nèi)建函數(shù)。

  • 數(shù)據(jù)結(jié)構(gòu)指計(jì)算機(jī)中數(shù)據(jù)存儲(chǔ)的方式

  • 序列的分類(lèi):

    • 可變序列(序列中的元素可以改變):例如 列表(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)(正序)012345678
編號(hào)(反序)-9-8-7-6-5-4-3-2-1

1.3、實(shí)際運(yùn)用

  • 以下就是數(shù)組通過(guò)索引來(lái)獲取單個(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ù)

  • 列表是用來(lái)存儲(chǔ)對(duì)象的對(duì)象

?   列表是由一系列按特定順序排列的元素組成的,通常包含多個(gè)元素,例如:字符串,整型數(shù)值,浮點(diǎn)型數(shù)值,列表,None,列表,字典等。在python中,用方括號(hào)[ ] 表示列表,并用逗號(hào)分割其中的元素

2.2、 列表的使用

  • 列表的創(chuàng)建:通過(guò)[]來(lái)創(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ì)字符串的切片中有講過(guò)字符串切片的用法,其實(shí)切片不止是字符串能用,列表list,元組tuple都能夠使用切片。
?   切片做的事情在已知的數(shù)據(jù)上取出想要的部分。切片是在可迭代對(duì)象的基礎(chǔ)上,取出任意長(zhǎng)度的元素,同時(shí)取得范圍、頻次也是可以自定義的
總結(jié):切片是取操作,不改變?cè)?/code>

  • 切片是指從現(xiàn)有可迭代對(duì)象(列表)中獲得一個(gè)子列表

  • 通過(guò)切片來(lái)獲取指定的元素

3.2、語(yǔ)法

  • 列表[起始 : 結(jié)束 : 步長(zhǎng)] 左閉右開(kāi)區(qū)間 取頭不取尾 步長(zhǎng)默認(rèn)是1

詳細(xì)一點(diǎn)講就是:
1、左閉右開(kāi)區(qū)間:在通過(guò)切片獲取元素時(shí),會(huì)包括起始位置的元素,不會(huì)包括結(jié)束位置的元素
2、起始位置和結(jié)束位置的索引可以不寫(xiě)

  • 如果省略結(jié)束位置, 則會(huì)從當(dāng)前的開(kāi)始位置一直截取到最后

  • 如果省略開(kāi)始位置, 則會(huì)從第一個(gè)元素截取到結(jié)束的元素,但是不包括結(jié)束的元素

  • 如果開(kāi)始位置和結(jié)束位置都省略, 則則會(huì)從第一個(gè)元素開(kāi)始截取到最后一個(gè)元素

3、步長(zhǎng)表示每次獲取元素的間隔,默認(rèn)是1(可以省略不寫(xiě))
4、 步長(zhǎng)不能是0,但可以是是負(fù)數(shù)

3.3、 實(shí)際運(yùn)用

  • 個(gè)人對(duì)切片學(xué)習(xí)的心得:建議親自動(dòng)手敲幾遍,概念看再多總歸還不如多去實(shí)操幾遍來(lái)的效果好。

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é)束位置和步長(zhǎng)都是空,既打印所有列表元素

print(a[0:3])   # 默認(rèn)步長(zhǎng)為1
# 運(yùn)行結(jié)果 》》》['a', 'b', 'c']
# 運(yùn)行講解:a列表從第一位a取到第4位d,d不可取,所以只能取到c,既abc這3個(gè)元素
# 也可以是如下寫(xiě)法,從 0 開(kāi)始就可以把初始位置省略,效果如上
print(a[:3])

print(a[0:4:2])    # 初始位置為0可省略
# 運(yùn)行結(jié)果 》》》['a', 'c']
# 運(yùn)行講解:a列表從第一位a取到第5位e,e不可取,步長(zhǎng)為2,只能取到ac

print(a[-1:-4])
# 運(yùn)行結(jié)果 》》》[]
# 運(yùn)行講解:步長(zhǎng)不寫(xiě)默認(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不可取,步長(zhǎng)為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é)束位置都為空,步長(zhǎng)為負(fù),則逆序打印

4、通用操作

4.1 操作與說(shuō)明

操作說(shuō)明
+可以將兩個(gè)列表拼接成一個(gè)列表
*可以將列表重復(fù)指定的次數(shù)
(注意2個(gè)列表不能夠做乘法,要和整數(shù)做乘法運(yùn)算)
in用來(lái)檢查指定元素是否在列表當(dāng)中
not in用來(lái)檢查指定元素是否不在列表當(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]
#上面這種寫(xiě)法會(huì)報(bào)錯(cuò)的哦,像這樣:
# TypeError: can't multiply sequence by non-int of type 'list'
# 類(lèi)型錯(cuò)誤:不能用“列表”類(lèi)型的非整數(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’的索引

注:列表沒(méi)有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中以無(wú)法使用,可以用operator代替,效果一樣的
a = ['11','22','33']
b = ['22','33','44']
import operator
print(operator.eq(a,b))
# 運(yùn)行結(jié)果 》》》False

這里有一種關(guān)于operator模塊的使用,感興趣的朋友可以了解一下
python列表的示例分析

5、修改列表

通過(guò)切片來(lái)修改(起始就是給切片的內(nèi)容重新賦值,但是賦值的內(nèi)容必須是一個(gè)序列)
當(dāng)設(shè)置了步長(zhǎng)時(shí),序列中元素的個(gè)數(shù)必須和切片中元素的個(gè)數(shù)保持一致
通過(guò)切片來(lái)刪除元素

  • 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 方法與說(shuō)明

方法說(shuō)明
append()像列表的最后添加一個(gè)元素
insert(arg1,arg2)像列表指定位置插入一個(gè)元素 參數(shù)1:要插入的位置 參數(shù)2:要插入的元素
extend(iterable)使用一個(gè)新的序列來(lái)擴(kuò)展當(dāng)前序列
(它會(huì)將該序列的中元素添加到列表中) 參數(shù)需要傳遞
pop()根據(jù)索引刪除并返回指定元素
remove()刪除指定元素 (如果相同值的元素有多個(gè),只會(huì)刪除第一個(gè))
reverse()翻轉(zhuǎn)列表
sort(key=None,reverse=False)用來(lái)對(duì)列表中的元素進(jìn)行排序 reverse:True反序;False 正序

6.2 實(shí)際運(yùn)用

6.2.1、添加方法

  • append()

# list.append()  向類(lèi)表中最后的位置插入一個(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() 使用新的序列來(lái)擴(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ì)條件語(yǔ)句的補(bǔ)充(for循環(huán))

7.1、基本概念

?   for 語(yǔ)句是 Python 中執(zhí)行迭代的兩個(gè)語(yǔ)句之一,另一個(gè)語(yǔ)句是 while。while在之前的博客里有講過(guò),這里我們補(bǔ)充介紹一下for循環(huán)的用法。
?   Python 中,for 循環(huán)用于遍歷一個(gè)迭代對(duì)象的所有元素。循環(huán)內(nèi)的語(yǔ)句段會(huì)針對(duì)迭代對(duì)象的每一個(gè)元素項(xiàng)目都執(zhí)行一次。這里我們用的迭代對(duì)象就是列表和range。

7.2、for 循環(huán)語(yǔ)法

  • 字符串

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ù)說(shuō)明:

這個(gè)也是左閉右開(kāi)區(qū)間,所以終止值不可取
i: 初始值(默認(rèn)為‘0’)
j: 終止值(默認(rèn)為‘1’)
k: 步長(zhǎng)值,即每次重復(fù)操作時(shí)比上一次操作所增長(zhǎng)的數(shù)值。(默認(rèn)為‘1’)

執(zhí)行過(guò)程:

第一步:將 i 值傳遞給 ‘迭代變量’,然后執(zhí)行一次內(nèi)部語(yǔ)句;
第二步:在 i 的基礎(chǔ)上 + k 再次傳遞給 ‘迭代變量’,如果 ‘迭代變量’ 的值小于 ‘j’ 的值,則再次執(zhí)行內(nèi)部語(yǔ)句,否則退出for循環(huán)。

詳情如下:

for i in range(9):
    print(i)

運(yùn)行結(jié)果如圖;
python列表的示例分析

8、課后作業(yè)

python列表的示例分析

8.1、 現(xiàn)在有 a = [1,2,3,4,5,6] 用多種方式實(shí)現(xiàn)列表的反轉(zhuǎn)([6,5,4,3,2,1]) 并寫(xiě)出推導(dǎo)過(guò)程

# 第一種方法,使用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é)果如下:
    python列表的示例分析

  • 知識(shí)點(diǎn)運(yùn)用及編寫(xiě)思路:

?   第一種方法用到了列表方法append和for循環(huán)的配合,每一次運(yùn)行都將列表a中的值添加給b,達(dá)到逆序的效果。
?   第二種方法是切片的逆序打印,詳情可以看上面切片的介紹及運(yùn)用。
?   第三種和第四張方法都是列表方法的運(yùn)用,不過(guò)第三種不管里面的元素是什么類(lèi)型的都可以逆序打印,但第四張只能針對(duì)像這種原本就是元素從小到大的列表,其他的就達(dá)不到逆序的效果。

8.2、給用戶9次機(jī)會(huì) 猜1 - 10 個(gè)數(shù)字隨機(jī)來(lái)猜數(shù)字。

# 第一種
list1 = [1,2,3,4,5,6,7,8,9,10]
list2=[]
print('現(xiàn)在我們來(lái)猜數(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次都沒(méi)猜對(duì)哦?。?!應(yīng)該是ywz99v9才對(duì)哦!')

# 第二種
list1 = [1,2,3,4,5,6,7,8,9,10]
list2=[]
print('現(xiàn)在我們來(lái)猜數(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('哎呀,你沒(méi)有按照規(guī)范輸入哦?。。?#39;)
        continue
else:
    for a in list1:
        if a not in list2:
            d = a
            continue
print(f'哈哈哈,你9次都沒(méi)猜對(duì)哦!??!應(yīng)該是a1gj9i2才對(duì)哦!')

# 第三種 最終簡(jiǎn)化版,建議使用此方法
list1 = [1,2,3,4,5,6,7,8,9,10]
print('現(xiàn)在我們來(lái)猜數(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('哎呀,你沒(méi)有按照規(guī)范輸入哦?。?!')
        continue
else:
	print(f'哈哈哈,你9次都沒(méi)猜對(duì)哦?。?!應(yīng)該是{list1[0]}才對(duì)哦!')
  • 運(yùn)行結(jié)果如下(最終方法的運(yùn)行)

python列表的示例分析

  • 知識(shí)點(diǎn)運(yùn)用及編寫(xiě)思路:

?   這3種方法也是循序漸進(jìn)的,由Cheney老師以及群里的各位大佬指點(diǎn)改進(jìn)的
?   第一種方法中規(guī)中矩,就是利用for循環(huán),循環(huán)9次,讓用戶每次都猜一次,我們就將用戶猜的值添加給列表list2,最后9次循環(huán)之后將list1與list2的值進(jìn)行判斷,最后輸出用戶沒(méi)有猜到的值。
?   第二種方法就是再第一題的基礎(chǔ)上加上了判斷,限定用戶必須猜1~10之間的數(shù)字。
?   上述的2種方法也能達(dá)到效果,但是還是不夠簡(jiǎn)便,所以在聽(tīng)取了群里的大佬西安聶澤雨的意見(jiàn)后改的,使用remove方法將用戶猜的數(shù)字都從列表中刪除,這樣就能達(dá)到與上面2種方法相同的效果,也簡(jiǎn)化了代碼。
?   在此,還要非常感謝一下Cheney老師以及群里的大佬的指點(diǎn)與幫助,讓我學(xué)習(xí)到了更多的代碼知識(shí)以及思路。學(xué)無(wú)止境,希望各位再觀看完我的博客后,能給我的不足地方指出,謝謝。

  • 下面是我原本寫(xiě)的,解題思路稍微有點(diǎn)偏差,也可以借鑒一下的

  • 讓用戶9次都猜不對(duì),前2種方法都有一點(diǎn)點(diǎn)問(wè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次都沒(méi)猜對(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次都沒(méi)猜對(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('哈哈哈,你一次都沒(méi)猜對(duì)!?。?#39;)
  • 運(yùn)行結(jié)果如下(這里只展示第3種方法的效果,還有2種也差不多):
    python列表的示例分析

  • 知識(shí)點(diǎn)運(yùn)用及編寫(xiě)思路:

?   此代碼是我在理解錯(cuò)題目意思后寫(xiě)的,讓用戶9次都猜不對(duì),每一次都輸出一個(gè)數(shù)字。
?   這里我寫(xiě)了3種方法,思路是循序漸進(jìn)的,應(yīng)該更好理解。
?   首先我們第一種方法用到的就是for循環(huán)和列表的運(yùn)用,先創(chuàng)建一個(gè)列表,里面的元素就是1~10的數(shù)字,然后不管用戶輸入什么數(shù)字,我這邊都加上2輸出,這里因?yàn)樗饕菑?開(kāi)始,所以list1[a+1]就能達(dá)到這種效果,但是我發(fā)現(xiàn)這個(gè)方法又不足,先不說(shuō),我們輸出的數(shù)字不隨機(jī),再有就是我不管輸入什么數(shù)字都行,缺少了一個(gè)判斷,所以我又進(jìn)行了更改
?  第二種方法我就在第一種方法加上了if判斷,但是我這個(gè)時(shí)候又遇到一個(gè)問(wèn)題,如果接著用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è)問(wèn)題,就是他有很大概率讓用戶懵中,所以我這又給他加了個(gè)循環(huán),使其就算猜中了也沒(méi)用,猜中我就換一個(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é)果如下:
    python列表的示例分析

  • 知識(shí)點(diǎn)運(yùn)用及編寫(xiě)思路:

?  這題比較容易,獲取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é)果如下:
    python列表的示例分析

  • 知識(shí)點(diǎn)運(yùn)用及編寫(xiě)思路:

?  這題說(shuō)白了就是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é)果:
python列表的示例分析

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é)果:
python列表的示例分析

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列表的示例分析

以上是“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://muchs.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)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)