Python高階特性 切片 迭代 列表生成式

2022-07-19 04:18:17 字數 3383 閱讀 7737

1行**能實現的功能,決不寫5行**。請始終牢記,**越少,開發效率越高。

#取list前三個數   

list = ['a','b','c','d']

ans =

for i in range(0,3):

print(ans)

print(list[0:3]) #l[0:3]表示,從索引0開始取,直到索引3為止,但不包括索引3。即索引0,1,2,正好是3個元素。

#第乙個索引是0,還可以省略

print(list[:3])

#可以從索引1開始,取出2個元素出來

print(list[1:3])

#python支援l[-1]取倒數第乙個元素,那麼它同樣支援倒數切片

#記住倒數第乙個元素的索引是-1。

tuple也是一種list,唯一區別是tuple不可變。因此,tuple也可以用切片操作,只是操作的結果仍是tuple:

(1,2,3,4,5)[:3]   => (1, 2 ,3 )
在很多程式語言中,針對字串提供了很多各種擷取函式(例如,substring),其實目的就是對字串切片。python沒有針對字串的擷取函式,只需要切片乙個操作就可以完成,非常簡單。

#去除首尾之間的空格

def trim(s):

while s[:1]==' ':

s=s[1:]

while s[-1:]==' ':

s = s[:-1]

return s;

如果給定乙個list或tuple,我們可以通過for迴圈來遍歷這個list或tuple,這種遍歷我們稱為迭代(iteration)

list = ['a','b','c','d']

for i in list:

print(i)

python的for迴圈不僅可以用在list或tuple上,還可以作用在其他可迭代物件上。

#因為dict的儲存不是按照list的方式順序排列,所以,迭代出的結果順序很可能不一樣。

dic =

# 只要是可迭代物件,無論有無下標,都可以迭代,比如dict就可以迭代:

for i in dic:

print(i)

'''abc

dheo

l'''

#迭代dic的值

#預設情況下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同時迭代key和value,可以用for k, v in d.items()。

#字串也是可迭代物件 :迭代string

for i in 'abc':

print(i)

python內建的enumerate函式可以把乙個list變成索引-元素對

list = [1,2,3,4,5]

for i,value in enumerate(list):

print(i,value)

'''0 1

1 22 3

3 44 5

'''list = [(1, 1), (2, 4), (3, 9)]

for i,value in list:

print(i,value)

'''1 1

2 43 9 這方法不適用於字典

'''

b = range(1, 11)

print(b) # 結果 range(1, 11)

print(type(b))

print(list(b)) # 轉list

#range(1, 11)

##[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

#生成[1x1, 2x2, 3x3, ..., 10x10]

l = # 寫列表生成式時,把要生成的元素x * x放到前面,後面跟for迴圈,就可以把list建立出來

for x in range(1,11):

print(l)

#等同於

l=[ x*x for x in range(1,11)] # for 後面還可以加 if [x * x for x in range(1, 11) if x % 2 == 0] 不用「 :」 注意

print(l)

#還可以使用兩層迴圈,可以生成全排列

[m + n for m in 'abc' for n in 'xyz']

#['ax', 'ay', 'az', 'bx', 'by', 'bz', 'cx', 'cy', 'cz']

### os 系統的庫

import os # 匯入os模組,模組的概念後面講到

l = [d for d in os.listdir('.')] # os.listdir可以列出檔案和目錄

print(l)

# [d for d in os.listdir('.')] # os.listdir可以列出檔案和目錄

for迴圈其實可以同時使用兩個甚至多個變數,比如dict的items()可以同時迭代key和value: 然後現在可以迭代字典了

d = 

'''for x , value in d: # 不適用於字典

print(x,value) # errors

'''for x , value in d.items(): #適用於字典

print(x,value)

#也可生成列表

d =

l = [ x+'='+str(y) for x , y in d.items()] # 這裡的連線需要同型別的 需要型別轉換

Python 高階特性 切片

在list,string 中取部分元素的操作是十分常見的 如下list list 1,2,qwe 3,asd list 1,2,qwe 3,asd 想要取中間三個元素,要怎麼做?笨方法 1 直接利用索引取值 list 1 list 2 list 3 2,qwe 3 如果有100個元素或者1000元素...

Python3 基礎 高階特性 切片和迭代

定義乙個list l michael sarah tracy bob jack 對l進行切片 l 0 3 取索引 0 1 2的內容 或者簡寫 l 3 michael sarah tracy 倒數切片 l 2 bob jack 記住倒數第乙個元素的索引是 1 l 2 1 bob 注意結果取的是 2位置...

Python高階特性 切片 Slice

如何在乙個陣列中取特定的一組資料?是乙個個指定?l range 10 l 0,1,2,3,4,5,6,7,8,9 l 0 0 l 1 l 2 l 3 1,2,3 資料少還行,要是資料多呢?迴圈怎麼樣?l range 10 l 0,1,2,3,4,5,6,7,8,9 for i in range 3 ...