day13 列表的相關操作

列表介紹

想一想:

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

定義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-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)

運行結果如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章