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 ...