1. 程式人生 > >python中的資料型別——列表(list)

python中的資料型別——列表(list)

數值型別:int (long)
float
布林型
字串
列表(list)

python2中(int long):

在這裡插入圖片描述

python3中(int):

在這裡插入圖片描述

列表的定義

C語言中陣列:儲存同一種資料型別的集和 scores=[1,2,33,44]
列表(打了激素的陣列):可以儲存任意資料型別的集和

li = [1,2.2,True,'hello']
print(li,type(li))

列表裡面是可以巢狀列表的

li = [1,2,3,False,'python',[1,2,3,4,5]]
print(li,type(li))

import random
li = list(range(10))
random.shuffle(li)
print(li)

列表的特性

索引

service = ['http','ssh','ftp']    #存在列表service

正向索引

print(service[0])

反向索引

print(service[-1])

索引的練習

例一:
根據用於指定月份,列印該月份所屬的季節。
提示: 3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季

month = int(input('Month:'))
if month in [3,4,5]:
    print('春季')
elif month in [6,7,8]:
    print('夏季')
elif month in [9,10,11]:
    print('秋季')
else:
    print('冬季')

例二:
假設有下面這樣的列表:
names = [‘fentiao’,‘fendai’,‘fensi’,‘fish’]
輸出的結果為:‘I have fentiao,fendai,fensi and fish’

names = ['fentiao','fendai','fensi','fish']
print('I have ' + ','.join(names[:-1]) + ' and ' + names[-1])

切片

print(service[::-1])  # 列表的反轉
print(service[1::])   # 除了第一個之外的其他元素
print(service[:-1])   # 除了最後一個之外的其他元素

重複

print(service * 3)

連線

service1 = ['mysql','firewalld']
print(service + service1)

成員操作符

print('firewalld' in service)
print('ftp' in service)
print('firewalld' not in service)
print('ftp' not in service)

列表裡面巢狀列表

service2 = [['http',80],['ssh',22],['ftp',21]]
print(service2[0][0])
print(service2[-1][1])

列表的增刪改查

列表的增加

service = ['http', 'ssh', 'ftp']
print(service + ['firewalld'])

append:追加,追加一個元素到列表中

service.append('firewalld')
print(service)

extend:拉伸,追加多個元素到列表中

service.extend(['hello','python'])
print(service)

insert:在索引位置插入元素

service.insert(0,'firewalld')
print(service)

列表元素的刪除

In [1]: li = [1,2,3,4]

pop()按索引值刪除

In [2]: li.pop()
Out[2]: 4

In [3]: li.pop(0)
Out[3]: 1

In [4]: li.pop(3)
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-4-e9f9f299015e> in <module>()
----> 1 li.pop(3)

remove()按python關鍵字刪除

service = ['http', 'ssh', 'ftp']
remove
service.remove('ftp')
print(service)
service.remove('https')
print(service)

claer:清空列表裡面的所有元素

service.clear()
print(service)

del(python關鍵字) 從記憶體中刪除列表

del service
print(service)
print('刪除列表第一個索引對應的值:',end='')
del service[1]
print(service)
print('刪除前兩個元素之外的其他元素:',end='')
del service[2:]
print(service)

列表元素的修改

service = ['ftp','http', 'ssh', 'ftp']

通過索引,重新賦值

service[0] = 'mysql'
print(service)

通過slice(切片)

service[:2] = ['mysql','firewalld']
print(service)

列表元素的檢視

service = ['ftp','http', 'ssh', 'ftp','ssh','ssh']

檢視元素出現的次數

print(service.count('ftp'))

檢視制定元素的索引值(也可以指定範圍)

print(service.index('ssh'))
print(service.index('ssh',4,8))

排序檢視(按照ascii碼進行排序)

print(service.sort(reverse=True))
print(service)

對字串排序不區分大小寫

phones = ['alice','bob','harry','Borry']
phones.sort(key=str.lower)
phones.sort(key=str.upper)
print(phones)

列表練習01——棧

stack = [1,2,3,4]
棧的工作原理:先進後出
入棧
出棧
棧頂元素
棧的長度
棧是否為空

stack = []

info = """
        棧操作
     1.入棧
     2.出棧
     3.棧頂元素
     4.棧的長度
     5.棧是否為空
"""

while True:
    print(info)
    choice = input('請輸入選擇:')
    if choice == '1':
        item = input('入棧元素:')
        stack.append(item)
        print('元素%s入棧成功' %(item))
    elif choice == '2':
        # 先判斷棧是否為空
        if not stack:
            print('棧為空,不能出棧')
        else:
            item = stack.pop()
            print('元素%s出棧成功' %(item))
    elif choice == '3':
        if len(stack) == 0:
            print('棧為空,無棧頂元素')
        else:
            print('棧頂元素為%s' %(stack[-1]))
    elif choice == '4':
        print('棧的長度為%s' %(len(stack)))

    elif choice == '5':
        if len(stack) == 0:
            print('棧為空')
        else:
            print('棧不為空')
    elif choice == 'q':
        print('歡迎下次使用')
        break
    else:
        print('請輸入正確的選擇')

6.列表練習02——使用者登入

1.系統裡面有多個使用者, 使用者資訊目前儲存在列表裡面:
users = [‘root’, ‘westos’]
passwds = [‘123’, ‘456’]
2.使用者登陸(判斷使用者登陸是否成功):
1). 判斷使用者是否存在?(inuser in users)
2). 如果存在:
判斷使用者密碼是否正確?
(先找出使用者對應的索引值,根據passwds[索引值]拿出該使用者的密碼)
如果正確:登陸成功,退出迴圈;
如果密碼不正確, 重新登陸,總共有三次登陸機會
3). 如果不存在:重新登陸, 總共有三次登陸機會

users = ['root', 'westos']
passwds = ['123', '456']

嘗試登陸的次數

trycount = 0

while trycount < 3:
    inuser = input('使用者名稱:')
    inpasswd = input('密碼:')
    # 嘗試次數加1
    trycount += 1
    if inuser in users:
        # 判斷使用者密碼是否正確
        index = users.index(inuser)
        passwd = passwds[index]
        if inpasswd == passwd:
            print('%s登陸成功' % (inuser))
            break
        else:
            print('%s登陸失敗:密碼錯誤' % (inuser))
    else:
        print('使用者%s不存在' % (inuser))
else:
    print('已經超過3次機會了~')

7.列表練習03——後臺管理

1.後臺管理員只有一個使用者:admin;密碼::admin
2.當管理員登陸成功後, 可以管理前臺會員資訊
會員資訊管理包含:
1)新增會員資訊
2)刪除會員資訊
3)檢視會員資訊
4)退出

users = ['root','redhat']
passwds = ['123','456']
inuser = input('請輸入使用者名稱:')
inpasswd = input('請輸入密碼:')
if inuser == 'admin' and inpasswd == 'admin':
    print('管理員登陸成功')
    while True:
        print("""
                操作選項
                1.新增會員資訊
                2.刪除會員資訊
                3.檢視會員資訊
                4.退出
                """)

    choice = input('請輸入操作選項:')
    if choice == '1':
        print('新增會員資訊'.center(50,'*'))
        adduser = input('請輸入要新增的會員名:')
        if adduser in users:
            print('會員名%s已存在' %(adduser))
        else:
            addpasswd = input('請輸入密碼:')
            users.append(adduser)
            passwds.append(addpasswd)
            print('新增使用者%s成功!' % (adduser))

    elif choice == '2':
        print('刪除會員資訊'.center(50,'*'))
        deluser = input('請輸入想要刪除的會員名:')
        if deluser in users:
            delindex = users.index(deluser)
            users.remove(deluser)
            passwds.pop(delindex)
            print('刪除使用者%s成功' %(deluser))
        else:
            print('%s使用者不存在' %(deluser))

    elif choice == '3':
        print('檢視使用者資訊'.center(50,'*'))
        seeuser = input('請輸入想要檢視的使用者資訊:')
        if seeuser in users:
            print('\t使用者名稱\t密碼')
            seeindex = users.index(seeuser)
            print('\t%s\t%s' %(users[seeindex],passwds[seeindex]))

    elif choice == '4':
        print('退出登陸')
        exit()

    else:
        print('請輸入正確的選項!')

else:
    print('管理員登入失敗')