1. 程式人生 > >python基礎資料型別:list(列表)__004

python基礎資料型別:list(列表)__004

1、在學習列表之前,重新複習一下編碼的規則

回顧編碼解析:

(1)ASCII碼:

由字母、數字以及特殊字元構成的;

每一個字元為一個位元組,1位元組byte=8位bit

(2)unicode:又稱萬國碼,由字母、數字、特殊字元和中文構成,每個字元都是32位:4個位元組,包括1一個英文字母是4個位元組

(3)utf-8:unicode的升級版,由字母、數字、特殊字元和中文構成

字母、數字、特殊字元:每個字元1個位元組

中文24位                     :每個字元3個位元組

(4)gbk  :由ascii碼演變過來,只在中國用

字母、數字、特殊字元:1個位元組

中文16位                     :2個位元組

window系統的預設編碼方式GBK

=============================list(列表的操作)=====================================

1、列表的元素(方法同獲取字串元素)

例子:

li = ['alex',[1,2,3],'江河','女神','長江']
#獲取列表li的第一個元素
li_1 = li[0]
print(li_1)
#通過切片的形式獲取列表li部分元素
li_part = li[0:3]
print(li_part)
#獲取列表倒序
li_part = li[-1:-3:-1]
li_part_1 = li[-1::-1]
print(li_part)
print(li_part_1)

2、列表元素的增加

例子:

#在列表末尾新增新的元素,使用方法 append('元素')
li.append('li')
print(li)
#通過索引在列表的任意位置新增元素 insert(index,object)
li.insert(0,'ll')
print(li)
在列表中新增新的值,持續不斷的新增,錄入q退出
#在列表中新增新的值,持續不斷的新增,錄入q退出
while 1:
    user_input = input('使用者輸入新的元素值:')
    if str(user_input.lower()) != 'q':
        li.append(user_input)
        print(li)
    else:
        print(li)
        break

(1)迭代式新增,如果是字串,每個字元是一個元素;如果是列表可以新增多個元素

li = ['alex',[1,2,3],'江河','女神','長江']
# li.extend('北大青鳥')
print(li)  # ['alex', [1, 2, 3], '江河', '女神', '長江', '北', '大', '青', '鳥']

li.extend(['北大','青鳥']) # 新增列表可以一次新增多個元素
print(li)   #['alex', [1, 2, 3], '江河', '女神', '長江', '北大', '青鳥']

3、列表元素的刪除

(1)pop() 

語法:

列表名稱.pop()  # 預設刪除列表最後一個元素

可以刪除指定索引的元素

刪除的元素可以賦值給變數

li = ['alex',[1,2,3],'江河','女神','長江']
li_1 = li.pop()
print(li)
print(li_1)
#['alex', [1, 2, 3], '江河', '女神']
#長江

(2)remove()

語法:

列表名稱.remover() # 按照列表中的元素刪除,刪除元素無返回值

li = ['alex',[1,2,3],'江河','女神','長江']
li.remove('江河')
print(li)

(3)clear()

語法:

列表名稱.clear() # 清空列表

li = ['alex',[1,2,3],'江河','女神','長江']
li.clear()
print(li)  # []

(4)del

語法:

del  列表名稱   #  刪除列表

del  列表名稱[0:3]   # 刪除列表的部分元素

li = ['alex',[1,2,3],'江河','女神','長江']
del li[0:3]  # 刪除列表部分元素
del li   # 刪除列表
print(li)

4、列表元素的修改

(1)語法:列表名稱.[0] = '修改後的元素值'

li = ['alex',[1,2,3],'江河','女神','長江']
li[0] = 'll'
print(li)

(2)切片修改:

如果修改的值是字串,每一個字元是一個元素,如果新增的字元少於修改元素,則修改成新增的元素,剩餘的未修改索引元素自動刪除,如果多餘修改的索引,則增加新增的元素

li = ['alex',[1,2,3],'江河','女神','長江']
li[0:2] = 'a'
print(li)   
#['a', '江河', '女神', '長江']


li = ['alex',[1,2,3],'江河','女神','長江']
li[0:2] = 'abcde'
print(li)
#['a', 'b', 'c', 'd', 'e', '江河', '女神', '長江']

如果修改成的值是列表,則按照列表元素新增修改,其他同上

li = ['alex',[1,2,3],'江河','女神','長江']
li[0:2] = ['werw','1212','qwqwqw','sdsd']
print(li)
#['werw', '1212', 'qwqwqw', 'sdsd', '江河', '女神', '長江']

5、列表元素的查詢

li = ['alex',[1,2,3],'江河','女神','長江']
#查詢列表的每一個元素
for i in li:
    print(i)


li = ['alex',[1,2,3],'江河','女神','長江']
#切片查詢列表的部分元素
l = li[0:3]
print(l)


li = ['alex',[1,2,3],'江河','女神','長江']
# 查詢列表的長度(公共方法包括:列表、字串、字典、元組)
print(len(li))

#5

(2)檢視列表中某一個元素出現的次數,包括列表,字串,字典,元組

li = ['alex',[1,2,3],'1','江河','1','女神','長江','1']
num = li.count('1')
print(num)

(3)列表中通過元素找索引的方法:index('元素',開始查詢的索引,結束查詢的索引)

li = ['alex',[1,2,3],'1','江河','1','女神','長江','1']
index_1 = li.index('1',5)
print(index_1)

(4)列表元素正向排序的方法:sort()  # 必須是數字

li = [1,3,4,2,7,9,14,10]
li.sort()  #正向排序
print(li)

li.sort(reverse=True)  #倒序
print(li)

(5)使用冒泡法排序的方法排序

def li_sort(li):
    for j in range(len(li)-1):
        for i in range(len(li)-1-j):
            if li[i]>li[i+1]:
                li[i],li[i+1] = li[i+1],li[i]
    return li
li_1 = li_sort(li)
print(li_1)

(6)列表元素反轉reverse()

li = ['alex',[1,2,3],'1','江河','1','女神','長江','1']
li.reverse()  # 列表元素反轉
print(li)

6、列表的巢狀

(1)獲取列表元素中列表的某個值

li = ['beautiful','pay',1,2,[11,23,25,'good'],16]
#取列表中11
li_11 = li[4][0]
print(li_11)

(2)修改列表元素首字母大寫方法:capitalize()

li = ['beautiful','pay',1,2,[11,23,25,'good'],16]
li[1] = li[1].capitalize()
print(li[1])   # Pay

(3)列表元素中替換字串的方法:replace()

replace() 方法把字串中的 old(舊字串) 替換成 new(新字串),如果指定第三個引數max,則替換不超過 max 次

li = ['beautiful','pay',1,2,[11,23,25,'good'],16]
li[4][3] = li[4][3].replace('good','江河')
print(li)

#  ['beautiful', 'pay', 1, 2, [11, 23, 25, '江河'], 16]

(4)元組為只讀列表,可迴圈查詢,可切片(兒子不能修改,孫子能改)

li = ('beautiful','pay',1,2,[11,23,25,'good'],16)
li[4][1] = '列表'
print(li)

# ('beautiful', 'pay', 1, 2, [11, '列表', 25, 'good'], 16)


li = ('beautiful','pay',1,2,[11,23,25,'good'],16)
li[4] = '列表'
print(li)

# 報錯
# TypeError: 'tuple' object does not support item assignment

(5)列表轉成字串連線list ---> str  用join()方法(注意:列表必須是純字串)

li = ['1212','江河']
s = ''.join(li)
print(s)

(6)字串轉換成列表str(str---->list)用split(),同時也可以擷取字串

s = "asd 江 河"
s1 = s.split() # 轉換成列表 
s2 = s.split('d')[0] # 擷取部分字串 
print(s1)  #  ['asd', '江', '河']
print(s2) # as

(7)range(start, stop[, step])函式可以建立一個整數列表,一般用在for迴圈中,start預設是0,stop結束,不包括

#for迴圈
for i in range(0,10,2):
    print(i)
for i in range(10,0,-2): # 倒著列印
    print(i)



#通過使用rang來列印列表中列表元素
li = ['beautiful','pay',1,2,[11,23,25,'good'],16]
for i in range(len(li)):
    if type(li[i]) == list:
        for i in li[i]:
            print(i)
    else:
        print(li[i])

(8)input:計算使用者輸入的內容input中索引為奇數and並且對應的元素為數字的個數isdigt()(沒有則個數為0)

while 1:
    count = 0
    number1 = input('請輸入數字:')
    for i in range(len(number1)):
        if i%2 != 0 and number1[i].isdigit():
            count += 1
    print(count)

=======================練習==============================

1、lis = [2,3,'k',['qwe',20,['k',['tt',3,'1']],89],'ab','adv']

1)將列表lis中的’tt’變成大寫(用兩種方式)。

lis = [2,3,'k',['qwe',20,['k',['tt',3,'1']],89],'ab','adv']
# lis[3][2][1][0] = 'TT'
lis[3][2][1][0] = lis[3][2][1][0].upper()
print(lis)

2)將列表中的數字3變成字串’100’(用兩種方式)。

lis[1] = '100'
lis[3][2][1][1] = '100'
print(lis)

3、開發敏感詞語過濾程式,提示使用者輸入評論內容,如果使用者輸入的內容中包含特殊的字元: 敏感詞列表 li = ["李老師","東京",”蘭花”,”衣服”] 則將使用者輸入的內容中的敏感詞彙替換成***,並新增到一個列表中; 如果使用者輸入的內容沒有敏感詞彙,則直接新增到上述的列表中。(有問題?)

li_replace = []
while 1:
    input_1 = input("請輸入")
    li_1 = ["李老師", "東京",'蘭花','衣服']
    for i in li_1:
        if i in input_1:
            input_1 = input_1.replace(i,"***")
    li_replace.append(input_1)
    print(li_replace)