巨蟒python全棧開發-第4天 列表&元組&range

今日內容大綱
1. 什麼是列表
  定義: 能裝對象的對象
  在python中使用[]來描述列表, 內部元素用逗號隔開. 對數據類型沒有要求java

  列表存在索引和切片. 和字符串是同樣的.python

2. 相關的增刪改查操做(重點)
  添加:
    1. append() 追加
    2. insert(位置, 元素) 插入指定元素到指定位置
  刪除:
    1. pop(index) 根據索引刪除
    2. remove(元素) 根據元素刪除
  修改:
    索引修改
    lst[索引] = 元素
  查詢:
    for循環.編程

3. 列表的嵌套
  多個列表互相嵌套數組

4. 列表的其餘操做
  1. count() 計數
  2. sort() 排序 reverse = True
  3. reverse() 翻轉
  4. len() 求長度app

5. 什麼是元組
  能裝對象的對象. 不可變數據類型. 一旦確認好. 不可更改
  只讀列表
  能夠迭代編程語言

6. 元組的嵌套
  和列表同樣.均可以互相嵌套.
  元組的不可變: 指向不變測試

7. range(重點, 難點)
  只要會數數就行
  range(n) [0, n)
  range(m,n) [m, n)
  range(m,n,p) [m,n) 每隔p取一個優化

8.# 重點spa

  for i in range(len(lst)):
  i 索引
  lst[i] 元素code

DAY4  -基礎數據類型之(list,tuple)

本節主要內容:

  1.列表

  2.列表的增刪改查

  3.列表的嵌套

  4.元組和元組的嵌套

  5.range

一.列表

1.1 列表的介紹

  列表是python的基礎數據類型之⼀ ,其餘編程語言也有相似的數據類型. 好比JS中的數 組, java中的數組等等. 它是以[ ]括起來, 每一個元素用' , '隔開並且能夠存放各類數據類型:

 

 

列表相比於字符串. 不只能夠存放不一樣的數據類型. 並且能夠存放⼤量的數據. 32位 python能夠存放: 536870912個元素, 64位能夠存放: 1152921504606846975個元素.⽽且列 表是有序的(按照你保存的順序),有索引, 能夠切片方便取值.

2.2 列表的索引和切片

  列表和字符串⼀樣也擁有索引:

  列表的切片:

⼆. 列表的增刪改查

1. 增, 注意, list和str是不⼀樣的. lst能夠發生改變. 因此直接就在原來的對象上進行了操做

2. 刪除 pop, remove, clear, del

3. 修改 索引切片修改

4. 查詢, 列表是⼀個可迭代對象, 因此能夠進⾏for循環

5. 其餘操做

三. 列表的嵌套

  採用降維操做,⼀層⼀層的看就好,就沒有問題

 

四. 元組和元組嵌套 元組: 俗稱不可變的列表.又被成爲只讀列表, 元組也是python的基本數據類型之⼀, 用小括號括起來, 裏面能夠聽任何數據類型的數據, 查詢能夠. 循環也能夠. 切片也能夠. 但就是不能 改.

 

關於不可變, 注意: 這裏元組的不可變的意思是子元素不可變,而子元素內部的子元素是可 以變, 這取決於子元素是不是可變對象. 元組中若是隻有⼀個元素. ⼀定要添加⼀個逗號, 不然就不是元組

 

元組也有count(), index(), len()等⽅法. 能夠本身測試使用

 

五. range range能夠幫咱們獲取到⼀組數據. 經過for循環可以獲取到這些數據.

 

今日做業:

1.寫代碼,有以下列表,按照要求實現每⼀個功能

# li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
# 1)計算列表的⻓度並輸出
''''''
'''
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
print(len(li))
'''
# 2)列表中追加元素"seven",並輸出添加後的列表
'''
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
li.append('seven')  #這部分不能夠直接寫在append裏邊
print(li)
'''
# 3)請在列表的第1個位置插⼊元素"Tony",並輸出添加後的列表
'''#兩種理解方式
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
li.insert(1,'Tony')  #這部分不能夠直接寫在append裏邊
print(li)

li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
li.insert(0,'Tony')
print(li)
'''
# 4)請修改列表第2個位置的元素爲"Kelly",並輸出修改後的列表
'''
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
li[1]='Kelly'
print(li)
'''
# 5)請將列表l2=[1,"a",3,4,"heart"]的每⼀個元素添加到列表li中,⼀⾏代碼實
# 現,不容許循環添加。
'''
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
l2=[1,"a",3,4,"heart"]
li.extend(l2)
print(li)
'''
# 6)請將字符串s = "qwert"的每⼀個元素添加到列表li中,⼀⾏代碼實現,不
# 容許循環添加。
'''
#重點複習,從最大值索引加1開始切片
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
s="qwert"
li[5:]=s
print(li)
'''

'''
# 7)請刪除列表中的元素"eric",並輸出添加後的列表
#這是錯題不作
'''
# 8)請刪除列表中的第2個元素,並輸出刪除的元素和刪除元素後的列表
'''
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
del li[1]
print(li)
'''
'''
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
li.pop(1)
print(li)
'''
'''
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
li.remove('WuSir')
print(li)
'''

# 9)請刪除列表中的第2⾄4個元素,並輸出刪除元素後的列表
'''
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
del li[1:4]
print(li)
'''
# 10)請將列表全部得元素反轉,並輸出反轉後的列表
'''
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
li.reverse()
print(li)
'''
# 11)請計算出"alex"元素在列表li中出現的次數,並輸出該次數。
'''
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
s=li.count('alex')
print(s)
'''

 3,寫代碼,有以下列表,按照要求實現每⼀個功能。

# lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
# 1)將列表lis中的"tt"變成⼤寫(⽤兩種⽅式)。
'''
方法一:
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
lis[3][2][1][0]='TT'
print(lis)
'''
'''
#方法二:
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
lis[3][2][1][0]=lis[3][2][1][0].upper()
print(lis)
'''
# 2)將列表中的數字3變成字符串"100"(⽤兩種⽅式)。
'''#列表中有兩個三,在這裏我只實現一個3,作下實驗
# 方法一:
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
lis[3][2][1][1]='100'
print(lis)
'''
'''
#方法二:
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
lis[3][2][1][1]=str(lis[3][2][1][1]+97)
print(lis)
'''
# 3)將列表中的字符串"1"變成數字101(⽤兩種⽅式)。
'''
#方法一 lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"] lis[3][2][1][2]=int(lis[3][2][1][2])+100 print(lis) ''' """ #方法二: lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"] lis[3][2][1][2]=101 print(lis) """
4.請⽤代碼實現:
# li = ["alex", "eric", "rain"]
# 利⽤下劃線將列表的每⼀個元素拼接成字符串"alex_eric_rain"
'''#重點記憶
li = ["alex", "eric", "rain"]
s=''
for i in li:
    s+=i+'_'
s=s.rstrip('_')
print(s)
'''

'''
li = ["alex", "eric", "rain"]
li='_'.join(li)
print(li)
'''

'''#while方法實現
li = ["alex", "eric", "rain"]
count = 0
ll = ""
while count <= len(li) -1:
    ll =ll + (li[count])+"_"
    count += 1
print(ll.strip("_"))
'''

'''
li = ["alex", "eric", "rain"]
count = 0
ll = ""
while count <= len(li):
    ll =ll + (li[count])+"_"
    count += 1
print(ll.strip("_"))
'''
5.利⽤for循環和range打印出下⾯列表的索引。
# li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
'''
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
for i in range(len(li)):
    print(i,li[i])
'''

6.利⽤for循環和range找出100之內全部的偶數並將這些偶數插⼊到⼀個新列表中。

l=[]
for i in range(101):
    if i%2==0:
        l.append(i)
print(l)

7.利⽤for循環和range 找出50之內能被3整除的數,並將這些數插⼊到⼀個新列表中

l7=[]
for i in range(51):
    if i%3==0:
        l7.append(i)
print(l7)

8.利⽤for循環和range從100~1,倒序打印。

'''#正序打印1-100
for i in range(1,101):
    print(i)
'''
'''
#倒敘打印100-1//重點記憶//
for i in range(100,0,-1):
    print(i)
'''

9.利⽤for循環和range從100~10,倒序將全部的偶數添加到⼀個新列表中,而後對列表的元素進⾏篩選,將能被4整除的數留下來。

l=[]
k=[]
for i in range(100,9,-2):
    l.append(i)
print(l)
for s in l:
    if s%4==0:
        k.append(s)
print(k)

10.利⽤for循環和range,將1-30的數字⼀次添加到⼀個列表中,並循環這個列表,將能被3整除的數改爲*。

'''#重點記憶這道題,尤爲是後半部分
l1=[]
for i in range(1,31):
    l1.append(i)
print(l1)
k=0
for s in l1:
    if s%3==0:
        l1[k]="*"
    k+=1
print(l1)
'''
11,查找列表li中的元素,移除每一個元素的空格,並找出以"A"或者"a"開頭,並
以"c"結尾的全部元素,並添加到⼀個新列表中,最後循環打印這個新列表。
li = ["TaiBai ", 「ale xC", 「AbC ", "egon", " ri TiAn", "WuSir", " aqc"]
'''
#重點記憶:前半部分,怎麼去掉空格的,深刻了解方法
lk=[]
s=0
li = ["TaiBai ", "ale xC", "AbC ", "egon", " ri TiAn", "WuSir", " aqc"]
while s<len(li):
    li[s]=li[s].replace(" ",'')
    s+=1
print(li)
for i in li:
    if (i.startswith('A') or i.startswith('a'))and i.endswith('c'):
        lk.append(i)
print(lk)
'''
12,開發敏感詞語過濾程序,提示⽤戶輸⼊評論內容,若是⽤戶輸⼊的內容中
包含特殊的字符:
敏感詞列表 li = ["蒼⽼師", "東京熱", "武藤蘭", "波多野結⾐"]
則將⽤戶輸⼊的內容中的敏感詞彙替換成等⻓度的*(蒼⽼師就替換***),並添
加到⼀個列表中;若是⽤戶輸⼊的內容沒有敏感詞彙,則直接添加到上述的列
表中。
'''
#重點記憶,沒作出來
#字符串操做,利用列表的遍歷做爲條件,進行字符串的操做replace
l=[]
li = ["蒼老師", "東京熱", "武藤蘭", "波多野結衣"]
s=input('請輸入評論內容:')
for i in li:
    s=s.replace(i,len(i)*'*')
l.append(s)
print(l)
'''
'''
l=[]
li = ["蒼老師", "東京熱", "武藤蘭", "波多野結衣"]
while 1:
    s=input('請輸入評論內容:')
    if s.upper()=='Q':
        break
    for i in li:
        s=s.replace(i,len(i)*'*')
    l.append(s)
    print(l)
'''
13,有以下列表
li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
循環打印列表中的每一個元素,遇到列表則再循環打印出它⾥⾯的元素。
我想要的結果是:
1
3
4
alex
3
7,
8
taibai
5
ritian
'''
重點複習:沒有思路,作這個題目
        #用==,而不是is
        #先判斷列表
        #打印出來的結果沒有引號
li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
for i in li:
    if type(i)==list:
        for ii in i:
            if type(ii) is str:
                print(ii.lower())
            else:
                print(ii)
    else:
        if type(i)==str:
            print(i.lower())
        else:
            print(i)        
'''
14. 把班級學⽣數學考試成績錄⼊到⼀個列表中: 並求平均值. 要求: 錄⼊的時候
要帶着⼈名錄⼊, 例如: 張三_44
'''#這道題目沒作出來//初版問題比較多
sum=0
l=[]
while 1:
    k=input('按Q退出,其餘鍵繼續錄入成績:').upper()
    if k=='Q':
        break
    s=input('請輸入名字和成績例如,張三_44:')
    l.append(s)
print(l)

avg=input('按1求平均值,其餘鍵退出:')
if avg==1:
    for i in l:
        a,b=i.split('_')
        sum+=int(b)
print('平均值是:',sum/len(l))
'''
'''#參考高手版本
#思路整理:兩個input合成1句話寫
#sum在下邊用,直接寫在下邊
#不用判斷輸入什麼,只要第一個input有,輸入Q,就直接退出
l=[]
while 1:
    k=input('按Q退出,或者請輸入學生的姓名和成績(姓名_成績):').upper()
    if k=='Q':
        break
    l.append(k)
print(l)   #在這裏能夠清晰看到輸入的哪些姓名_成績
sum=0
for i in l:
    a,b=i.split('_')   #這裏用到了解包
    sum+=int(b)
print('平均值是:',sum/len(l))
'''

'''#高手版本
lst = []
while 1:
    s = input("請輸入學生的姓名和成績(姓名_成績),輸入Q退出:")
    if s.upper() == "Q":
        break
    lst.append(s)
sum = 0
for i in lst:
    a = i.split("_")
    sum += int(a[1])
print(sum / len(lst))
'''
15. 敲七遊戲. 從0開始數數. 遇到7或者7的倍數要在桌上敲⼀下. 編程來完成敲七
'''#初版
s=int(input('請輸入數字:'))
cou=0
l=[]
for i in range(1,s+1):
    l.append(i)
for i in l:
    if i%7==0:
        l[cou]='咣'
    cou+=1
print(l)
'''

'''
#第二版
#思路:1.輸入數字,定義索引常量0,定義空列表
#     2.用for,把輸入數字的1到數字,添加到列表中
#     3.用for遍歷,判斷是否是7的倍數,或者數字裏含有7
#     4.對這些數字進行修改
     #5.打印   
s=int(input('請輸入數字:'))
cou=0
l=[]
for i in range(1,s+1):
    l.append(i)
for i in l:
    if i%7==0 or '7' in str(i):
        l[cou]='咣'
    cou+=1
print(l)
'''

'''#第三版:高手優化版本 
#思路:1.建立空列表,輸入任意數字
      2.用for和range,建立1串數字
      3.在for循環中,用if判斷是否是7的倍數或者含有數字7,
      4.經過用空列表,進行添加
      5.最後打印列表
#利用列表進行添加:
l = []
n = int(input("輸入任意數:"))
for i in range(1,n+1):
    if i % 7 == 0 or "7" in str(i) :
        l.append("咚")
    else:
        l.append(i)
print(l)

'''

16.(升級題) 編寫程序. 完成⼼動⼥⽣的篩選. (升級題)

         ⾸先. 程序會提示⽤戶錄⼊10位⼼儀⼥⽣的姓名. 而後把10位⼥⽣的名
字和序號展現出來. 由⽤戶選擇⼼動⼥⽣. 此時⽤戶能夠選擇3個⼼動⼥⽣. 把⽤
戶選中的三個⼼動⼥⽣的名字打印出來. 供⽤戶繼續選擇. 這⼀次選擇. 只能選
擇⼀名⼥⽣. 而後輸出⽤戶的⼼動⼥⽣是xxx
運⾏效果

多練習這個版本,複習
count=0
l=[]
while count<5:
    shu=input('請輸入您心儀的女生(您還能夠輸入%s個):'%(5-count))
    l.append(shu)
    count+=1
print('您當前的心儀女生有:')
a=0
for i in range(len(l)):   #這個地方要注意
    print(f'編號:{a+1},名字:{l[a]}')
    a+=1

print("請輸入你更喜歡的三位女生的編號")
b=0
b1=[]
while b<3:
    b += 1
    better_love=input(f"請輸入第{b}個美眉的編號:")
    b1.append(better_love)

c=0
for i in range(len(b1)):
    print(f'編號:{c+1},名字:{b1[c]}')
    c+=1
print('最後三選一')
d=int(input('請輸入你最喜歡的人的編號:'))
print(f'程序幫你選出來了,你最喜歡的是{b1[d-1]}妹子')


'''1版
# count = 5
# l = []
# while count > 0:
#     s = input("請輸入你心儀的女生(你還能夠輸入%s次);" % (count))
#     l.append(s)
#     count -= 1
# print("你當前心儀的女生有:")
#
# a = 1
# for el in l:
#     print("編號: %s,名字: %s" % (a,el))
#     a += 1
# print("請輸入你更喜歡的三個女人的編號:")
#
# b = 1
# l1 = []
# while b <= 3:
#     s2 = input("請輸入第%s個美眉的編號;" % (b))
#     l1.append(l[int(s2)-1])
#     b += 1
# print("更喜歡的新鮮出爐;")
#
# a1 = 1
# l2 = []
# for el1 in l1:
#     print("編號: %s,名字: %s" % (a1,el1))
#     a1 += 1
# print("最後了,三選一:")
# s3 = input("輸入你最喜歡的人的編號:")
# l2.append(l1[int(s3)-1])
# print("程序幫你選出來了,你喜歡的是%s妹子." % (l2[0]))
'''

#2版
# lst = []
# lst2 = []
# count = 0
# count2 = 0
# while count < 10:
#     xindong = input(f"請輸入你的心動女生(你還能夠輸入{10 - count}個:)")
#     lst.append(xindong)
#     count += 1
# print('您當前的心儀女生有:')
# for i in range(len(lst)):
#     print(f"編號:{i + 1}, 名字:{lst[i]}")
# print('請輸入你更喜歡的三個女生的編號')
# while count2 < 3:
#     xindong2 = int(input(f"請輸入第{1 + count2}個美眉的編號:"))
#     lst2.append(lst[xindong2 - 1])
#     count2 += 1
# print('更喜歡的新鮮出爐')
# for i in range(len(lst2)):
#     print(f"編號:{i + 1}, 名字:{lst2[i]}")
# print('最後三選一')
# xindong3 = int(input("請輸入你喜歡的人的編號"))
# print(f"程序幫你選出來了,你最喜歡的妹子是{lst2[xindong3 - 1]}")
相關文章
相關標籤/搜索