python中關於列表和元祖的基礎知識


一,列表

1)定義:

[]內以逗號分隔,按照索引,存放各種數據類型,每一個位置代表一個元素

2)特性:

1 可存放多個值
2 按照從左到右的順序定義列表元素,下標為零開始順序訪問,有序
3可修改指定索引位置對應的值,是可變的,

3)列表的操作和字符串一樣

  1,切片是和字符串一樣的

#例1
lst=["豬八戒","孫悟空","唐僧","沙僧",["觀音","如來","藍燈","十八羅漢",["太上老君","太白金星","哪吒","木吒","金吒"]]]
print(lst[3])
print(lst[4][4][3])
print(lst[4][4][2:5:2])
print(lst[::-2])
print(lst[::-1])
#例2
lst = ["華仔", '赫本', '趙四', "孫藝珍", '車太賢']
print(lst[3][1]) # 索引拿到的是元素
print(lst[-3])
print(lst[1:3]) # 切片也一樣
print(lst[::-2]) # 反着切也OK

 

2.列表的增刪改查

#_1新增
lst = ["西紅柿首富","無雙", "", "超能泰坦"]
print(lst.append("123")) # 可變的數據類型 沒有返回值
# 追加。 添加到末尾(重點)
lst.append("找到你")
lst.append("鬼子來了")
lst.append("前任4")
print(lst)
# 插入
lst.insert(0, "建國大業") # 插入, 效率不高. 索引的變更
lst.insert(2, "美國往事")
迭代添加
lst.extend("周傑倫")   # ["周傑倫"][0]
lst.extend(["倚天屠龍記", "鄉村愛情"])
print(lst)
#_2刪除
lst = ["傑森斯坦森", "勒布朗詹姆斯", "尼古拉斯凱奇", "郭達森"]
pop() 彈出一個, 默認彈出最后一個
lst.pop()
lst.pop(1) # 可以彈出指定位置的元素
ret = lst.pop() # 返回值是被刪除的元素
ret = lst.pop(2)
print(ret)
remove   #  移除 , 指定元素, 刪除第一個
lst.remove("勒布朗詹姆斯") #
lst.remove("尼古拉斯凱奇")
  #切片刪除
del lst[2] # 類似pop
del lst[2:] # 批量刪除
del lst[1:5:2] # 切片刪除
lst.clear() # 清空列表
print(lst)
#_3修改
lst = ["周傑倫", "周筆暢", "周星馳", "周潤發"]
lst[1] = "周星星" # 指定索引去修改. (重點)
lst[1:3] = "馬虎疼" # 迭代修改
lst[1:3] = ["馬虎疼"]
lst[::2] = ["馬虎疼", "王健林"] # 當切片出來的內容步長如果不是1:元素的個數必須要匹配
lst[::2] = "馬雲"
print(lst)
#_4查詢
lst = ["胡辣湯", "豬腳飯", "吱吱冒油的豬蹄子", "豬頭肉"]
food表示列表中的每一項
for food in lst: # 列表可以使用for循環。 list是一個可迭代對象
    print(food)
lst = [1, 2, 4, 21, 4, 2, 22, 123, 4, 68]
lst.sort() # 排序. 從小到大. 升序
lst.sort(reverse=True) # 倒序。 降序. 從大到小
lst.reverse() # 翻過來
print(lst)
print(len(lst)) # 長度
#_5列表的嵌套
lst = [["葫蘆娃", "黑貓警長","西游記"], ["武斗乾坤", "wahaha", "斗破蒼穹", "盤龍"], ["三體", "明朝那些事兒"]]
print(lst[1][0])
print(lst[2][2][0])
#_降維: 一層一層的找
# 把wahaha中的a換成b
lst[1][1] = lst[1][1].replace("a", "b") # 多層嵌套的時候如果進行操作。 需要重新賦值。 原因是替換的內容是一個 字符串
lst[1].insert(1, "大鬧天宮") # 對於內部元素如果是可變的數據類型。 直接改就行了
print(lst)

二,元組

定義: tuple表示 ,  由()組成內部元素用逗號隔開
特點:不可變  只讀列表。 也有索引 和切片功能
t = ("周傑倫", "哇哈哈", "爽歪歪", "酸酸乳", "三鹿奶粉", "AD鈣奶")
print(t[1])
print(t[1:5]) # 切片的結果是一個元組
print(t[1:5:2])
t[1] = "益力多" # TypeError: 'tuple' object does not support item assignment

#元組的不可變. 元組的不可變指的是元組內部第一層元素的內存地址
t = ("張無忌", "周芷若", "趙敏")
t[0] = "胡辣湯"
t = ("周潤發", "周星馳", ["渣渣輝","古天綠","陳小春"])
t[2].append("李嘉誠")
print(t)
lst1 = [] # 新列表
lst2 = list() # 新列表
print(lst1, lst2)
t1 = () # 元祖
t2 = tuple() # 元祖
print(t1, t2)
# 元組如果只有一個元素。必須加逗號
t1 = (1, 3, 5, 7, 9,) # () 運算符  優先級
lst = ["哈哈", ]
print(t1)
print(lst)

三,for循環用來查找列表中元素和索引

lst = ["語文", "數學", "英語", "代數", "體育", "生物", "生物第二學期"]
for ke in lst: # 默認的for循環會忽略掉索引
    print(ke)
# 獲取到元素的索引和元素-背下來
for i in range(len(lst)):
    # i    #是索引
    # lst[i]   #獲取元素
    print(i, lst[i])

s = "我今天下午要吃雞"
for i in range(len(s)):
    print(i, s[i])

四,練習

li=["alex","WuSer","ritian","wenzhou"]
1)計算列表的長度並輸出
print(len(li))
2)列表中追加元素"seven"並輸出添加后的列表
li.append("seven")
    print(li)
3)請在列表的第1個位置插⼊元素"Tony",並輸出添加后的列表
li.insert(1,"Tony")
print(li)
4) 請修改列表第2個位置的元素為"Kelly",並輸出修改后的列表
li[2]=" Kelly"
print(li)
5)請將列表l2=[1,"a",3,4,"heart"]的每一個元素添加到列表li中,一行代碼實
現,不允許循環添加
l2=[1,"a",3,4,"heart"]
li.extend(l2[0:])
print(li)
print(li)
6)請將字符串s = "qwert"的每一個元素添加到列表li中,一行代碼實現,不
s="qwert"
li.extend(s)
print(li)
7) 添加"eric"元素,並輸出結果
li.append("eric")
print(li)
8)請刪除列表中的第2個元素,並輸出刪除的元素和刪除元素后的列表
li.pop(2)
print(li)
9)請刪除列表中的第2⾄4個元素,並輸出刪除元素后的列表
del li[2:5]
print(li)
10)請將列表所有得元素反轉,並輸出反轉后的列表
li.reverse()
print(li)
11)請計算出"alex"元素在列表li中出現的次數,並輸出該次數。
    count=0
    for i in li :
        if [i]==["alex"] :
            count +=1
            continue
    print(count)

2,寫代碼,有如下列表,利用切片實現每一個功能
li = [1, 3, 2, "a", 4, "b", 5,"c"]
# 1)通過對li列表的切片形成新的列表l1,l1 = [1,3,2]
l1=li[0:3]
print(l1)
# 2)通過對li列表的切片形成新的列表l2,l2 = ["a",4,"b"]
l2=li[3:6]
print(l2)
# 3)通過對li列表的切片形成新的列表l3,l3 = ["1,2,4,5]
l3=li[0::2]
print(l3)
# 4)通過對li列表的切片形成新的列表l4,l4 = [3,"a","b"]
l4=li[1:6:2]
print(l4)
# 5)通過對li列表的切片形成新的列表l5,l5 = ["c"]
l5=[li[-1]]
print(l5)
# 6)通過對li列表的切片形成新的列表l6,l6 = ["b","a",3]
l6=li[-3::-2]
print(l6)
3,寫代碼,有如下列表,按照要求實現每一個功能。
lis = [2, 5, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
1)將列表lis中的"tt"變成大寫(用兩種方式)。
方式1
lis[3][2][1][0]=lis[3][2][1][0].upper()
print(lis)
方式2
lis[3][2][1][0]=lis[3][2][1][0].replace("tt","TT")
print(lis)
2)將列表中的數字3變成字符串"100"(用兩種方式)。
方式1
lis[3][2][1][1] = "100"
方式2
lis[3][2][1][1] = str(lis[3][2][1][1] + 97)
方式三
lis[3][2][1][1] = str(lis[3][2][1][1]).replace("3", "100")
3)將列表中的字符串"1"變成數字101(用兩種方式)。
方式1
lis[3][2][1][2] = int(lis[3][2][1][2]+"01")
方式2
lis[3][2][1][2] = int(lis[3][2][1][2].replace("1", "101"))
4, 請用代碼實現:
li = ["alex", "eric", "rain"] 利用下划線將列表的每一個元素拼接成字符串 "alex_eric_rain"
#方法一
li=["alex","eric","rain"]
li[0:] =["alex_eric_rain"]
print(li)
#方法二
li = ["alex", "eric", "rain"]
s = ""
for name in li:
    s += name+"_"
print(s.strip("_"))
print(s[:len(s)-1]) # 當我確定最后一個一定是_的時候
#方法三
print("_".join(li))
5.利用for循環和range打印出下面列表的索引。
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
for index in range(0,len(li)):
    print(index)
6.利⽤for循環和range找出100以內所有的偶數並將這些偶數插入到一個新列表中。
ko=[]
for  i in range(0,100):
    if i%2==0:
        ko.append(i)
print(ko)
7.利用for循環和range找出50以內能被3整除的數,並將這些數插入到一個新列表中。
ko=[]
for i in range(0,50):
    if i%3 ==0:
        ko.append(i)
print(ko)
8.利⽤for循環和range從100~1,倒序打印。
ko=[]
for i in range(1,101):
    ko.append(i)
print(ko[::-1])
9.利⽤for循環和range從100~10,倒序將所有的偶數添加到一個新列表中,然后對列表的元素進行篩選,將能被4整除的數留下來。
ko=[]
for i in range(10,100):
    if i%2==0:
        ko.append(i)
for j in ko:
    if j%4==0:
        print(j)
10,利用for循環和range,將1 - 30的數字一次添加到一個列表中,並循環這個列表,將能被3整除的數改成 *
ko=[]
for i in range(1,30):
    ko.append(i)
for j in range(len(ko)):
    if ko[j]%3 ==0:
        ko[j] = "*"
print(ko)
11,查找列表li中的元素,移除每個元素的空格,並找出以 "A"或者"a"開頭,並以"c"結尾的所有元素,並添加到一個新列表中,
最后循環打印這個新列表。li = ["TaiBai ", “alexC", “AbC ", "egon", " ri TiAn", "WuSir", " aqc"]
li = ["TaiBai ", "alexC", "AbC ", "egon", " ri TiAn", "WuSir", " aqc"]
ko=[]
for  i in li :
    li=i.strip()
    if i.capitalize().startswith("A") and i.endswith("c")==1:
          ko.append(i)
print(ko)

  


12,開發敏感詞語過濾程序,提示⽤用戶輸入評論內容,如果用戶輸戶的內容中包含特殊的字符:
敏感詞列表li = ["蒼老師", "東京熱", "武藤蘭", "波多野結⾐"]
則將用戶輸入的內容中的敏感詞匯替換成等長度的 *(蒼老師就替換 ** *),並添
加到一個列表中;如果用戶輸入的內容沒有敏感詞匯,則直接添加到上述的列 表中。
lis=[]
li = ["蒼老師", "東京熱", "武藤蘭", "波多野結衣"]
content= input("請輸入評論:")
for i in li :
     if i  in content:
        content = content.replace(i,"*"*len(i))
lis.append(content)
print(content)
13,有如下列表
li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
#循環打印列表中的每個元素,遇到列表則再循環打印出它⾥⾯的元素。我想要的結果是:
'''1
3
4
"alex"
3
7,
8
"taibai"
5
ritian
'''
for el in li:
    if type(el) == list:
        for el2 in el:
            if type(el2) == str:
                print(el2.lower())
            else:
                print(el2)
    else:
        if type(el)==str:
            print(el.lower())
        else:
            print(el)

 


14. 把班級學⽣數學考試成績錄⼊到⼀個列表中: 並求平均值. 要求: 錄⼊的時候
要帶着⼈名錄⼊, 例如: 張三_44
lis=[]
while 1:
    content=input("請輸入信息:")
    if content.upper() == "Q":
        break
    lis.append(content)
#總分
scot=0
for i in lis:
    scot += int(i.split("_")[1])
print(scot)
#平均分
print(scot/len(lis))
15. 敲七游戲. 從0開始數數. 遇到7或者7的倍數要在桌上敲⼀下. 編程來完成敲 七
lis=[]
n=int(input("請輸入一個數:"))
for i in range(0,n):
    if i%7==0 or "7" in str(i):
        lis.append("")
    else:
        lis.append(i)
print(lis)
16. (升級題) 編寫程序. 完成⼼動⼥⽣的篩選. (升級題)
          ⾸先. 程序會提示⽤戶錄⼊10位⼼儀⼥⽣的姓名. 然后把10位⼥⽣的名
字和序號展示出來. 由⽤戶選擇⼼動⼥⽣. 此時⽤戶可以選擇3個⼼動⼥⽣. 把⽤
戶選中的三個⼼動⼥⽣的名字打印出來. 供⽤戶繼續選擇. 這⼀次選擇. 只能選
擇⼀名⼥⽣. 然后輸出⽤戶的⼼動⼥⽣是xxx
運⾏效果:
lis=[]
i=0
while i< 10 :
    nh="請輸入心儀的女生"+"(你還可以輸入" + str(10-i) +"個)"
    xd = input(nh+":")
    i+=1
    lis.append(xd)
index=0
for j in lis :
    index+=1
    print("編號:"+ str(index) + ", " +"名字:" + j )
lst=[]
count=1
while count<=3 :
    hh="請輸入第"+ str(count) + "個美眉的編號:"
    gxh= int(input(hh + ":"))
    count +=1
    lst.append(lis[gxh-1])
index2 = 0
for h in lst:
    index2 +=1
    print("編號:" + str(index2) + ", " + "名字:" + h)
love =int(input("請輸入你喜歡的編號:"))
print("程序選出來了你喜歡的是" + lst[love-1])

 






































免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM