1 . 什么是列表:
- 列表形如[‘saf’,‘sf’,5,'哈哈‘],是一個可以儲存任意數據類型的集合。
- 需要注意的是,列表和數組不同,數組是儲存統一數據類型的集合。
創建一個列表:
- zero_li = [ ] #建立一個空列表
- li = [ ‘http’ , ‘ftp’ , 5 ] #建立一個有數據的列表
列表的鑲嵌:
- li = [‘http’, ‘ftp’, 5, [‘http’, 5]]
2 . 列表的特性
1)索引
功能:指定獲取列表中某一個元素
server = ['http','ftp',12]
print(server[0]) #從左到右索引為0的元素運行結果:
http
反向索引:
server = ['http','ftp',12]
print(server[-1]) #從右到左第一個元素運行結果:
12
2)切片:
功能:指定獲取多個元素
service = ['http','ftp',12]
print(service[:]) #列表中的所有元素
運行結果:
['http', 'ftp', 12]print(service[::-1]) #列表中所有元素倒序
運行結果:
[12, 'ftp', 'http']print(service[1:]) #查看除去第一個元素之外的所有元素
運行結果:
['ftp', 12]print(service[:-1]) #除了倒數最后一個元素的其余元素
運行結果:
['http', 'ftp']print(service[:2]) #查看前兩個元素
運行結果:
['http', 'ftp']print(service[1:3]) #查看除去第一個到第三個為止的元素
運行結果:
['ftp', 12]
3)重復
簡單來說就是將列表中的數據復制n遍追加在列表最后
service = ['http','ftp',12]
print(service * 3) 重復三遍
運行結果:
['http', 'ftp', 12, 'http', 'ftp', 12, 'http', 'ftp', 12]
4)連接
將多個列表連接起來
service = ['http','ftp',12]
service1 = ['mysql','firewalld']
print(service + service1)
運行結果:
['http', 'ftp', 12, 'mysql', 'firewalld']
5)成員操作符
檢測某某某是否在列表中,有返回值為True,反之為False
in #判斷元素是否屬于該列表 屬于為真 不屬于為假
not in #判斷元素是否不屬于該列表 屬于為真 不屬于為假
service = ['http','ftp','ssh']
print('firewalld' in service) #運行結果為False
print('ftp' in service) #運行結果為True
print('mysql' not in service) #運行結果為True
練習題目:
1 . 假定有下面這樣的列表:
names = [‘fentiao’, ‘fendai’, ‘fensi’, ‘apple’]
輸出結果為:‘I have fentiao, fendai, fensi and apple.’
代碼如下:
names = ['fentiao', 'fendai', 'fensi', 'apple']
print('I have ' + ','.join(names[:-1]) + ' and ' + names[-1])
2 . 輸入某年某月某日(yyyy-MM-dd),判斷這一天是這一年的第幾天?
代碼如下:
cal = input('請輸入日期 yyyy-MM-dd:')
date = cal.split('-') #拆分日期
year = int(date[0])
month = int(date[1])
day = int(date[2])
arr = [0,31,28,31,30,31,30,31,31,30,31,30,31]
num = 0
if ((year % 4 ==0) and (year % 100 !=0)or (year % 400== 0)):arr[2] = 29
for i in range(1,len(arr)):if month > i:num += arr[i]else:num += daybreak
print('天數:',num)
列表元素的增加:
1 . append( ):追加一個元素到列表
service = ['http','ftp','ssh']
service.append('firewalld')
print(service)運行結果為:
['http', 'ftp', 'ssh', 'firewalld']
2 . extend( ):拉伸 追加多個元素到列表中
service = ['http','ftp','ssh']
service.extend(['mysql','nfs'])
print(service)運行結果為:
['http', 'ftp', 'ssh', 'mysql', 'nfs']
3 . insert( ) 在指定索引處插入元素
service = ['http','ftp','ssh']
service.insert(1,'https')
print(service)運行結果為:
['http', 'https', 'ftp', 'ssh']
列表元素的刪除
1、刪除最后一個元素
格式:列表.pop( )
service = ['http','ftp','ssh']
a=service.pop( )
print(a)
print(service)運行結果為:
ssh
['http', 'ftp']
2、刪除指定元素
格式:列表.remove( xxx)
service = ['http','ftp','ssh']
service.remove('ftp') #用字符串刪除
print(service)運行結果為:
['http', 'ssh']service.remove(service[0]) #用索引值刪除運行結果為:
['ftp', 'ssh']
3、刪除列表
格式:del 列表
service = ['http','ftp','ssh']
del service
print(service)運行結果為:
Traceback (most recent call last):File "/home/kiosk/PycharmProjects/20190523/練習.py", line 36, in <module>print(service)
NameError: name 'service' is not defined
列表元素的查看
1 count( ) 查看元素在列表中出現的次數
service = ['ftp','http','http','ssh','ftp','ssh','ftp','ssh']
print(service.count('ftp')) #查看ftp在列表中出現的次數運行結果為:
3
2 index(元素,start,stop) :查看指定元素的索引值,并返回最小索引,也可以指定在一定的索引范圍內搜索指定的元素,返回最小索引值
service = ['ftp','http','http','ssh','ftp','ssh','ftp','ssh']0 1 2 3 4 5 6 7 #對應的索引值
print(service.index('ssh')) 不指定的話在全列表中搜索ssh 并返回最小索引運行結果為:
3print(service.index('ssh',4,7))
運行結果為:
5
列表元素的排序
1、從小到大排序 或 從大到小排序
sort: 是應用在 list 上的方法。sort 方法直接在源列表上更改。sorted: 可以對所有可迭代的對象進行排序操作。sorted 方法返回的是一個新的列表,不會更改源列表。
sort示例:
li = [1, 2, 7, 4, 9, 5, 3]
li.sort()
print(li) #從小到大排序
print(li[::-1]) #從大到小排序
sorted 示例:
li = [1, 2, 7, 4, 9, 5, 3]
New_li = sorted(li)
print(li) #序列不變
print(New_li) #從小到大
print(New_li[::-1]) #從大到小
2、打亂順序
import random
li = [1, 2, 3, 4, 5, 7, 9]
random.shuffle(li)
print(li)運行結果為:
[3, 7, 9, 4, 1, 2, 5]
練習:
題目:輸入三個整數x,y,z,請把這三個數由小到大輸出:
num = input('請按照格式X,Y,Z 依次輸入數字 : ')
num1 = num.split(',')
result = []
for i in num1 :result.append(int(i))
result.sort()
for k in result:print('%d\t' % (k), end='')