Python——列表

若是想要表達多個「事物」,可使用列表。
name = ['a','b','c']html

增:python

name.append('c') #在後面增長一個c
name.insert(1,'d') #增長到b前面

刪:併發

name.remove('f') #刪除f
del name[1] #刪除編號1
name.pop(1) #刪除編號1,若是不寫那麼就刪除第一個。pop還能夠將刪除的值提取出來,從新賦值。
name.clear() #刪除列表。

改:app

name[2]='b' #將b更改成f

查:函數

print(name[2],name[0]) #取號碼進行識別
print(name[1:3]) #取1和2的值,3爲結束位。切片功能
print(name[-1]) #取最後一個值
print(name[-2:]) #取最後兩個值

以名字來查詢:spa

print(name.index('a')) #以姓名方式來查找用戶的編號
print(name.count('a')) #查看列表中有多少個a
print(name2[0:-1:2]) #每隔2個打印一次。

翻轉:線程

name.reverse() #進行翻轉,將文件倒過來

排序:htm

name.sort() #排序方式爲,特殊符號-數字-大寫-小寫-中文

合併:blog

name.extend(name2) #將name2的合併到name中.name2仍然會有,和name中的名稱衝突也會一直執行。

複製:排序

name2 = name.copy() #淺copy,表示只能複製第一層列表中的文字,若是添加子目錄,那麼就只能copy更改後的。
import copy #深copy,能夠copy子層內的全部文字。
name2= copy.deepcopy(name)

extend()和append()功能相似,但在處理多個列表時,返回的結果徹底不一樣。

>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a.append(b)
>>> a
[1, 2, 3, [4, 5, 6]]
>>> a=[1,2,3]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]

若是想要在A列表中,刪除B列表存在的內容:可使用:

案例:文件複製到A列表中,找到A列表想要刪除的內容存放到B列表中,而後for循環B列表的內容刪除A列表,最後再保存文件。

for i3 in b:
    a.remove(i3)

列表生成式:

生成式:
做用:
使代碼更簡潔。
和生成器一併使用。

a=[i*2 for i in range(10)] #列表生成式
print(a)

#=

a=[]           
for i in range(10):   #普通的列表形式   
 a.append(i*2)
print(a)z

列表生成器:

就至關於將列表生成式內的命令對應的內存地址顯示出來,再賦值給a。

  • 能夠節省大量的內存空間。
  • 只有在調用時纔會生成相應的數據。
  • 只會記錄當前的位置
  • 只有一個__nex__()2.7是next()方法能夠進行下一個的取值。(不能跳,也不能上一個)

例句:

就是將列表生成式的[],更改成()
a=(i*2 for i in range(10))

若是想調用某一次的必須使用for循環進行
2. 用函數來作生成器:
斐波那契數列(Fibonacci),除第一個和第二個數外,任意一個數均可由前兩個數相加獲得:
1,1,2,3,5,8,13,21,34...

def fib(max):
    n,a,b = 0,1,1
    while n < max:
        print(a)
        a,b = b,a+b
        n=n+1
fib(10)

將數值進行保存,並賦值給f,進行生成器的轉換。

def fib(max):
    n,a,b = 0,1,1
    while n < max:
        # print(a)
        yield a      #保存函數的中斷狀態,返回。
        a,b = b,a+b
        n=n+1
    return '---失敗---'
f=fib(10)
print(f.__next__())
print('——————')
print(f.__next__())
print(f.__next__())
print(f.__next__())

特色是:
能夠將函數進行中斷,而後再回到函數。
能夠實現並行效果。

注意:return命令,就是將錯誤值進行返回。並找出錯誤信息進行輸出。

請見‘python錯誤信息彙總’

用裝飾器來實現一個單線程下的,併發:

import time
def chibaozi(name):                #6. 運行吃包子
    print('%s 準備吃包子啦。'%name)  #7. 打印name=A開始吃包子
    while True:                     #8. 循環
        baozi = yield               #9. 中斷函數並返回
        print('包子[%s]來了,被[%s]吃了'%(baozi,name))   #15. 打印包子i值和被A值吃了,結束並返回至14步
def zuobaozi(name):      #2. 運行函數
    c = chibaozi('A')    #3. 將A賦值c
    c2 = chibaozi('B')   #4. 將B賦值c2
    c.__next__()         #5. 返回值chibaozi,並將c的賦值給予給name。就是name=A
    c2.__next__()        #9. 再次進入到chibaozi函數中,並開始運行6-9,並再次返回。
    print('開始準備作包子~')   #10. 打印開始準備作包子
    for i in range(1,10):    #11. 循環10次作包子
        time.sleep(1)        #12. 時間等待1秒鐘
        print('作了2個包子')   #13. 打印作了兩個包子
        c.send(i)             #14. 將i值回送,並返回第9步。
        c2.send(i)             #15. 將i值回送,並返回到第9步。返回後繼續運行for循環直至10次結束。
zuobaozi('xuan')          #1. 運行zuobaozi,並將xuan賦值

報錯信息:

IndexError: list index out of range的錯誤緣由

第1種可能狀況

list[index]index超出範圍

第2種可能狀況

list是一個空的 沒有一個元素 
進行list[0]就會出現該錯誤

相關文章
相關標籤/搜索