三、Python-列表
一、序列:是一塊用于存放多個值的連續內存空間,并且按一定順序排列,可以通過索引取值
- 索引:從左到右的索引從0開始依次增加的正整數;從右到左的索引為-1開始的復數
- 切片(分片):一中獲取序列中的元素的方法;
sname[start:end:step]--sname:序列名;start:起始值;end:結束值(不包括);step:步長
- 序列相加:兩個序列可以相加(只能同類型序列:列表+列表,元組+元組,字符串+字符串),被加的序列排在原來的序列后面
- 乘法:序列的乘法實際上就是把一個序列中的元素復制幾次
- 檢查某個元素是否是序列的成員:print("姚明" (not) in nba)---判斷姚明(不)在nba列表中
len也能計算字符串的長度
- 計算序列的長度:print("列表的長度為:"len(nba))---計算nba序列的長度
- 最大值:print(max(number))---返回序列中的最大值(只能用在序列中為數字型時)
- 最小值:prin(min(number))---返回序列中的最小值(只能用在序列中為數字型時)
list():把序列轉換為列表(數字和字符串都能轉換) str():序列轉換為字符串
sum():計算序列中元素和 sorted():給序列中元素排序
reversed():反轉序列中元素 ??? enumerate():把序列組合為一個索引序列
二、列表:列表中可以放:整數,實數,布爾值,字符串,序列,對象
- 列表的創建和刪除:一般不把不通類型的數據放在同一個列表中(提高可讀性)
- 賦值運算符直接創建:listname = [元素1,元素2,…]---用英文狀態的“,”隔開,元素數量無限制
- 創建空列表:a = []---創建一個名為a的空列表
- 創建數字列表:list(range(2,21,2))---2—21之間的偶數(數據全部都為數字)
- del listname------刪除列表(很少用)
- 訪問列表元素:獲取列表中的內容
- print() 索引 切片
- 遍歷列表:把列表中的元素全部預覽一遍
- for循環實現:只能輸出元素與的值
- for iten in listname: ---item用于保存獲取到的元素,listname為列表名
- for循環和enumerate:即顯示索引又顯示元素
- for index,item in enumerate(listname): ---index用于保存索引,item用戶保存獲元素的值
- for循環實現:只能輸出元素與的值
- 添加元素:+運算符添加(效率低)
- append:在元素列表末尾添加元素
- listname.append(obj) ---listname為被添加的列表名;obj為要添加的對象
- inert:用于在列表中間插入一個對象
- listname.inert(num,obj) ---num為要插入的位置的索引號;obj為要插入的對象
- extend:用于把一個列表添加到另一個列表的末尾
- listname.extend(seq) ---listname為原列表名,seq為被添加的列表
- append:在元素列表末尾添加元素
- 修改元素:只需要通過索引獲取該元素,然后再為其重新賦值
- verser[2]="…" ---verser為列表名,2為要修改的元素的索引號
- 刪除列表元素:
- 根據索引號刪除:必須知道要刪除的元素的索引號(索引號可為正數或負數)
- del verser[-1] ---刪除verser列表中索引為-1的元素
- 根據元素值來刪除:不確定其位置的元素(根據元素值來刪除,最好先判斷該元素是否在列表)
- if verser.count(value)>0 ---判斷value元素是否在列表verser中
- verser.remove(value) ---刪除verser列表中的value值
- if verser.count(value)>0 ---判斷value元素是否在列表verser中
- 根據索引號刪除:必須知道要刪除的元素的索引號(索引號可為正數或負數)
- 對列表進行統計計算:
- count:獲取指定元素在列表中出現的次數(精確匹配,不能只是元素的一部分)
- listname.count(obj) ---統計元素obj在列表listname中出現的次數
- index:獲取指定元素在列表中首次出現的位置(索引)(被統計的元素只能精確匹配)
- listname.index(obj) ---統計obj在列表中首次出現的位置
- sum:統計數字列表的元素和
- sum(iterable,start) ---iterable為要計算的列表名,start為系統統計結果要加的值(默認為0)
- count:獲取指定元素在列表中出現的次數(精確匹配,不能只是元素的一部分)
- 對列表進行排序:
- sort:對元素排序,排序后原列表中的元素順序將發生改變
- listname.sort(key=None,reverse=False) ---key表示指定一個從每個元素中提取的一個比較鍵(key=str.lower表示在排序時不區分大小寫);reverse為True表示降序,False為升序,默認為升
- sorted:排序后,源列表的元素順序不變
- sorted(itemble,key=None,reverse=False) ---itemble表示要排序的列表名稱
- sort:對元素排序,排序后原列表中的元素順序將發生改變
三、列表推導式:可以快速生成一個列表,或者根據某個列表生成滿足指定需求的列表
生成指定范圍的數字列表:list = [Expression for var range]
list = [i*i for i in range(2,11,2)] ---生成0-10的偶數的平方
list:生成列表的名稱; expression:表達式,計算型列表的元素
var:循環變量 range:采用range()函數生成range對象
根據列表生成指定需求的列表:newlist = [expression for var in list]
price = [1200,5300,2988,6200,1998,8888]
sale = [int(x*0.5) for x in price]
print('原價格:',price)
從列表中選擇符合條件的元素組成型列表:newlist = [expression for var in list if condition]
price = [1200,5330,2988,6200,1998,8888]
sele = [z for z in price if z >5000]
print('原列表:',price)
print("高于5000的:",sale)
condition:條件表達式,用于指定篩選的條件四、二維列表的使用:二維列表就是包含列表的列表,一個列表的每個元素都是一個列表
直接定義二維列表:listname=[元素1,元素2…],[元素11,元素12…],[元素21,元素22…],…]
使用嵌套的for循環創建:
room = []
for i in range(1,5): #樓層
room.append([]) #添加一個空列表
for j in range(1,8): #每一層的房間數
room[i-1].append(i*1000+100+j)
print(room)
使用列表推導式創建:(能使用推導式盡量使用推導式)
eg:room=[[i*1000+100+j for j in range(1,8)] for i in range(1,5)]
print(room)
eg:?
str1 = "千山鳥飛絕"
str2 = "萬徑人蹤滅"
str3 = "孤舟蓑笠翁"
str4 = "獨釣寒江雪"
list1 = [list(str1),list(str2),list(str3),list(str4)]
print("--橫版輸出--")
print()
for i in range(4): #循環的行數
for j in range(5): #循環每一行的字
if j == 4: #一行中的最后的一個字
print(list1[i][j]) #換行輸出
else:
print(list1[i][j],end="") #不換行輸出
print()
print()
print("--豎版--")
print()
list1.reverse() #排序(逆序)
for i in range(5): #循環每一行中的每一個
for j in range(4): #每一行
if j == 3:
print(list1[j][i]) #換行輸出
else:
print(list1[j][i],end='')
?posted on 2019-04-18 10:38 dameon 閱讀(...) 評論(...) 編輯 收藏