溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python列表的示例分析

發(fā)布時間:2021-01-30 09:34:45 來源:億速云 閱讀:431 作者:小新 欄目:編程語言

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

python:列表

  • 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、 刪除 關(guān)鍵字

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

    • 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é)構(gòu)。

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

  • 數(shù)據(jù)結(jié)構(gòu)指計算機中數(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’
編號(正序)012345678
編號(反序)-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ù)上取出想要的部分。切片是在可迭代對象的基礎(chǔ)上,取出任意長度的元素,同時取得范圍、頻次也是可以自定義的
總結(jié):切片是取操作,不改變原值

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

  • 通過切片來獲取指定的元素

3.2、語法

  • 列表[起始 : 結(jié)束 : 步長] 左閉右開區(qū)間 取頭不取尾 步長默認是1

詳細一點講就是:
1、左閉右開區(qū)間:在通過切片獲取元素時,會包括起始位置的元素,不會包括結(jié)束位置的元素
2、起始位置和結(jié)束位置的索引可以不寫

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

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

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

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

3.3、 實際運用

  • 個人對切片學(xué)習的心得:建議親自動手敲幾遍,概念看再多總歸還不如多去實操幾遍來的效果好。

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 操作與說明

操作說明
+可以將兩個列表拼接成一個列表
*可以將列表重復(fù)指定的次數(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)淺復(fù)制列表
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

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

5、修改列表

通過切片來修改(起始就是給切片的內(nèi)容重新賦值,但是賦值的內(nèi)容必須是一個序列)
當設(shè)置了步長時,序列中元素的個數(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、 刪除 關(guān)鍵字

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: 步長值,即每次重復(fù)操作時比上一次操作所增長的數(shù)值。(默認為‘1’)

執(zhí)行過程:

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

詳情如下:

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

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

8、課后作業(yè)

python列表的示例分析

8.1、 現(xiàn)在有 a = [1,2,3,4,5,6] 用多種方式實現(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)

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

  • 知識點運用及編寫思路:

?   第一種方法用到了列表方法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ù)字哦?。?!')
        continue
else:
    for a in list1:
        if a not in list2:
            d = a
print(f'哈哈哈,你9次都沒猜對哦?。?!應(yīng)該是gzgpjat才對哦!')

# 第二種
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次都沒猜對哦?。?!應(yīng)該是acitjq5才對哦!')

# 第三種 最終簡化版,建議使用此方法
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次都沒猜對哦?。。?yīng)該是{list1[0]}才對哦!')
  • 運行結(jié)果如下(最終方法的運行)

python列表的示例分析

  • 知識點運用及編寫思路:

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

  • 下面是我原本寫的,解題思路稍微有點偏差,也可以借鑒一下的

  • 讓用戶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'你猜錯啦,應(yīng)該是才對哦!')
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'你猜錯啦,應(yīng)該是才對哦!')
        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'你猜錯啦,應(yīng)該是才對哦!')
        i+=1
    else:
        print('哎呀,要猜1到10內(nèi)的數(shù)字哦!??!')
        continue
else:
    print('哈哈哈,你一次都沒猜對!??!')
  • 運行結(jié)果如下(這里只展示第3種方法的效果,還有2種也差不多):
    python列表的示例分析

  • 知識點運用及編寫思路:

?   此代碼是我在理解錯題目意思后寫的,讓用戶9次都猜不對,每一次都輸出一個數(shù)字。
?   這里我寫了3種方法,思路是循序漸進的,應(yīng)該更好理解。
?   首先我們第一種方法用到的就是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次,所以不符合我的預(yù)期效果,這個時候我想到了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é)果如下:
    python列表的示例分析

  • 知識點運用及編寫思路:

?  這題比較容易,獲取2個列表相同的元素,我們只要用一下循環(huán)嵌套就好了,外循環(huán)和內(nèi)循環(huán)都是循環(huán)3次,外循環(huán)就是lst1的元素數(shù)量,內(nèi)循環(huán)是lst2的元素數(shù)量,之后那list1的每一個元素都與list2的元素一一對比判斷就行了,相同的復(fù)制給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é)果如下:
    python列表的示例分析

  • 知識點運用及編寫思路:

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

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

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

以上是“python列表的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI