1. 程式人生 > >小白學Python(五)---------列表

小白學Python(五)---------列表

列表介紹
一、列表
<1>列表的格式
變數A的型別為列表
namesList = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]
比C語言的陣列強大的地方在於列表中的元素可以是不同型別的
testList = [1, ‘a’]
<2>列印列表
demo:
namesList = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]
print(namesList[0])
print(namesList[1])
print(namesList[2])

結果:
xiaoWang
xiaoZhang
xiaoHua

二、列表的迴圈遍歷

  1. 使用for迴圈
    為了更有效率的輸出列表的每個資料,可以使用迴圈來完成
    demo:
    namesList = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]
    for name in namesList:
    print(name)
    結果:
    xiaoWang
    xiaoZhang
    xiaoHua
  2. 使用while迴圈
    為了更有效率的輸出列表的每個資料,可以使用迴圈來完成
    demo:
    namesList = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]
    length = len(namesList)
    i = 0
    while i<length:
    print(namesList[i])
    i+=1
    結果:
    xiaoWang
    xiaoZhang
    xiaoHua

三、列表的相關操作
列表中存放的資料是可以進行修改的,比如"增"、“刪”、“改”、“查”
<1>新增元素("增"append, extend, insert)
 append
通過append可以向列表新增元素

demo:
#定義變數A,預設有3個元素
A = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]
print("-----新增之前,列表A的資料-----")
for tempName in A:
print(tempName)
#提示、並新增元素
temp = input(‘請輸入要新增的學生姓名:’)
A.append(temp)
print("-----新增之後,列表A的資料-----")
for tempName in A:
print(tempName)
在這裡插入圖片描述


 extend
通過extend可以將另一個集合中的元素逐一新增到列表中

a = [1, 2]
b = [3, 4]
a.append(b)
a
[1, 2, [3, 4]]

a.extend(b)
a
[1, 2, [3, 4], 3, 4]
 insert
insert(index, object) 在指定位置index前插入元素object

a = [0, 1, 2]
a.insert(1, 3)
a
[0, 3, 1, 2]
<2>修改元素(“改”)
修改元素的時候,要通過下標來確定要修改的是哪個元素,然後才能進行修改
demo:
#定義變數A,預設有3個元素
A = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]
print("-----修改之前,列表A的資料-----")
for tempName in A:
print(tempName)
#修改元素
A[1] = ‘xiaoLu’
print("-----修改之後,列表A的資料-----")
for tempName in A:
print(tempName)
結果:
-----修改之前,列表A的資料-----
xiaoWang
xiaoZhang
xiaoHua
-----修改之後,列表A的資料-----
xiaoWang
xiaoLu
xiaoHua

<3>查詢元素("查"in, not in, index, count)
所謂的查詢,就是看看指定的元素是否存在
 in, not in
python中查詢的常用方法為:
in(存在),如果存在那麼結果為true,否則為false
not in(不存在),如果不存在那麼結果為true,否則false

demo:
#待查詢的列表
nameList = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]
#獲取使用者要查詢的名字
findName = input(‘請輸入要查詢的姓名:’)
#查詢是否存在
if findName in nameList:
print(‘在字典中找到了相同的名字’)
else:
print(‘沒有找到’)

結果1:(找到)
結果2:(沒有找到)

說明:
in的方法只要會用了,那麼not in也是同樣的用法,只不過not in判斷的是不存在
index, count
index和count與字串中的用法相同

a = [‘a’, ‘b’, ‘c’, ‘a’, ‘b’]
a.index(‘a’, 1, 3) # 注意是左閉右開區間
Traceback (most recent call last):
File “”, line 1, in
ValueError: ‘a’ is not in list

a.index(‘a’, 1, 4)
3

a.count(‘b’)
2

a.count(‘d’)

<4>刪除元素("刪"del, pop, remove)
列表元素的常用刪除方法有:
 del:根據下標進行刪除
 pop:刪除最後一個元素
 remove:根據元素的值進行刪除

 demo:(del)
movieName = [‘加勒比海盜’,‘駭客帝國’,‘第一滴血’,‘指環王’,‘霍位元人’,‘速度與激情’]
print(’------刪除之前------’)
for tempName in movieName:
print(tempName)
del movieName[2]
print(’------刪除之後------’)
for tempName in movieName:
print(tempName)

結果:
------刪除之前------
加勒比海盜
駭客帝國
第一滴血
指環王
霍位元人
速度與激情
------刪除之後------
加勒比海盜
駭客帝國
指環王
霍位元人
速度與激情
 demo:(pop)
movieName = [‘加勒比海盜’,‘駭客帝國’,‘第一滴血’,‘指環王’,‘霍位元人’,‘速度與激情’]
print(’------刪除之前------’)
for tempName in movieName:
print(tempName)
movieName.pop()
print(’------刪除之後------’)
for tempName in movieName:
print(tempName)
結果:
------刪除之前------
加勒比海盜
駭客帝國
第一滴血
指環王
霍位元人
速度與激情
------刪除之後------
加勒比海盜
駭客帝國
第一滴血
指環王
霍位元人
 demo:(remove)
movieName = [‘加勒比海盜’,‘駭客帝國’,‘第一滴血’,‘指環王’,‘霍位元人’,‘速度與激情’]
print(’------刪除之前------’)
for tempName in movieName:
print(tempName)
movieName.remove(‘指環王’)
print(’------刪除之後------’)
96
for tempName in movieName:
print(tempName)
結果:
------刪除之前------
加勒比海盜
駭客帝國
第一滴血
指環王
霍位元人
速度與激情
------刪除之後------
加勒比海盜
駭客帝國
第一滴血
霍位元人
速度與激情
<5>排序(sort, reverse)
sort方法是將list按特定順序重新排列,預設為由小到大,引數reverse=True可改為倒序,由大到
小。
reverse方法是將list逆置。

a = [1, 4, 2, 3]
a
[1, 4, 2, 3]

a.reverse()
a
[3, 2, 4, 1]

a.sort()
a
[1, 2, 3, 4]

a.sort(reverse=True)
a
[4, 3, 2, 1]

三、列表的巢狀

  1. 列表巢狀
    類似while迴圈的巢狀,列表也是支援巢狀的
    一個列表中的元素又是一個列表,那麼這就是列表的巢狀
    schoolNames = [[‘北京大學’,‘清華大學’],
    [‘南開大學’,‘天津大學’,‘天津師範大學’],
    [‘山東大學’,‘中國海洋大學’]]
  2. 應用
    一個學校,有3個辦公室,現在有8位老師等待工位的分配,請編寫程式,完成隨機的分配
    #encoding=utf-8
    import random
    #定義一個列表用來儲存3個辦公室
    offices = [[],[],[]]
    定義一個列表用來儲存8位老師的名字
    names = [‘A’,‘B’,‘C’,‘D’,‘E’,‘F’,‘G’,‘H’]
    i = 0
    for name in names:
    index = random.randint(0,2)
    offices[index].append(name)
    i = 1
    for tempNames in offices:
    print(‘辦公室%d的人數為:%d’%(i,len(tempNames)))
    i+=1
    for name in tempNames:
    print("%s"%name,end=’’)
    print("\n")
    print("-"*20)
    執行結果如下:
    辦公室1的人數為:4
    ABCE

辦公室2的人數為:3
DGH

辦公室2的人數為:3
F