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('管理員登入失敗')