1. 程式人生 > >一起學Python:列表介紹

一起學Python:列表介紹

列表介紹

想一想:

前面學習的字串可以用來儲存一串資訊,那麼想一想,怎樣儲存咱們班所有同學的名字呢?

定義100個變數,每個變數存放一個學生的姓名可行嗎?有更好的辦法嗎?

答:

列表
<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 "<stdin>", line 1, in <module>
ValueError: 'a' is not in list
>>> a.index('a', 1, 4)3
>>> a.count('b')2
>>> a.count('d')0
<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('------刪除之後------')  
    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-8import random
# 定義一個列表用來儲存3個辦公室

offices = [[],[],[]]
# 定義一個列表用來儲存8位老師的名字
names = ['A','B','C','D','E','F','G','H']

i = 0for name in names:
    index = random.randint(0,2)    
    offices[index].append(name)

i = 1for tempNames in offices:
    print('辦公室%d的人數為:%d'%(i,len(tempNames)))
    i+=1
    for name in tempNames:
        print("%s"%name,end='')
    print("\n")
    print("-"*20)

原文連結:做最專業最懂你的程式設計微刊技術分享平臺,提供你最需要的開發學習資源。 我們專注於程式設計開發技術的學習與交流,我們堅持,每天進步一小步,人生進步一大步!關注【程式設計微刊】,與我們一起學習進步。https://www.jianshu.com/u/05f416aefbe1