Python中擷取強大的一個東西
- str[0:5]
- str[:]
- str[4:] #從第四個到最後一位
- str[:-3] #從最左側到倒數第三位(不含 第三位)
- str[2]
- str[1:9:2]
- str[-3:] 表示擷取後三位
- str[::-1] 反轉字串
- str[-2:]從倒數第二位,到最右側所 有的字元
第一種形式其實就是切片的基本形式,擷取第一位到第四位
的字元。注意:在切片中,不包括後一個數字代表的字元。剩下的都是切片的最種形式,第二種表示“
截 取”
這
個字串的全部字元,可以這樣理解,":"
前的“
空”
代表字串開頭,“:”
後
的”
空“
代表字串的尾。這樣的話第三種的意思是從第五個字元到結
尾。這裡需要注意的是片的標號是左邊從0
‘’
L.count('') ===> 5
'' in L ===> True
L.index('') ===> 0
L.find('') ===> 0
Python
中主要分為3
大類:number,sequence,mapping
string,list ,tuple
屬於sequence dictionary
屬於mapping
List
:
list
順序,可變的序列,成員可以是任何型別,也可以是list
。
用"+"
進行連線兩邊型別必須都是list
list
list.append()
此方法只能向list
增加一個成員,比如引數是list
,
作為一個成員新增
list.extend()
list + [args]
list
刪除操作
li = [0,1,2,3,4] li[4:]=[ ] -----> li=[0,1,2,3]
若寫成li[4]=[
]
則li=[0,1,2,3,4,[ ]]
li.pop(index) ----->[0,1,2]
預設彈出最後一個成員,也可以指定index
del li[2] ----->[0,1]
li.remove(index)
string
和 list
之間的轉換
str = "abc"
li = list(str)
li = [i for i in str]
li = " ".join(str).split()
第一,二種效率要比第三種高
str = "".join(li)
L.sort([cmp[, key[, reverse]]])
#
對L
進行排序。
list.remove(element)
只刪除第一次出現的元素
Dictionary {key1:value1,key2:value2....}
1,
沒有順序,只能通過key
來訪問
2,key
必須是不可變的物件,value
可以是任何物件,list
不能做為key,key
不
能重複,key
大小寫敏感
3
,+ ×
切片操作是非法的
- D.iterkeys()
- D.itervalues()
- D.iteritems()
這三個函式均返回一個iterator 物件,分別是keys/values/items 的iterator 。 可以用在for 迴圈中。比如:
- for x in D.iterkeys()
上 面說到的for x in D
實際上就是這種形式的簡寫,x
遍
歷的是keys
。如果要遍歷values
,也很簡單隻要把D.iterkeys()
改
為D.itervalues()
就 可以了。iteritems()
也類似。在iterator
對
象中有一個next()
的方法,可以像for
一樣,一次一次的呼叫next()
方
法,可以遍 歷iterator
中的資料。
>>> for k in d.iterkeys():
print "%s = %s "% (k,d[k])
一定要是一個tuple
型別資料 否則會提示:Typeerror:not
enough arguments for format string.
從dictionary
中刪除元素有:
del d[key]
d.clear()
p
ython
隨機數、隨機字元、隨機字串
from random import *
random()-->
預設是產生一個0-1
之
間的隨機浮點數
uniform(a,b)
產生一個[a,b)
之間的隨機數
randint(start,end,step)
產生一個[start,end]
步長為step
的
隨機整數,step
預設為1
randrange(start,end,step)
和randint
不同的是它不包括end.
choice(seq)
從序列中隨機取一個元素,seq
不能為空
sample(seq,num)
從序列中隨機取num
個隨機元素,返回一個list
shuffle(seq)
洗牌了,打亂順序,seq
必須為list
,結果會改變seq
import random
import string
# 隨機整數:
print random.randint(1,50)
# 隨機選取0 到100 間 的偶數:
print random.randrange(0, 101, 2)
Python 內建函式
函式名稱 行為
str( 任意物件) 返回任意物件的字串表示式, 如str(dir()), 則返回一個 字串
list( 序列) 返回一個序列的對應列表, 如list("tom") ,返回['t','o','m']
tuple( 序列) 返回一個序列對應的元組, 如tuple("tom"), 返回('t','o','m')
int(x) 把一個字串或數字轉換為整數, 去掉浮點部分, 如int(3.9) 返 回3
long(x) 把一個字串或數字轉換為長整數, 去掉浮點部分, 如long(3.9) 返 回3L
float(x) 把一個字串或數字轉換為浮點數, 如long('3.9') 返 回3.9
hex(i) 把字串或數字轉換為16 進位制數,hex(256) 返 回'0x100'
oct(i) 把字串或數字轉換為8 進位制數, oct(256) 返 回'0400'
ord(C) 返回字串的ASCII 值,ord("A") 返 回65
chr(i) 返回ASCII 值為i 的單個字元,chr(65) 返 回"A"
min(i,[,i]*) 返回最小項/ 成員, 如 min(12,56,5,45) 返回5
max(i,[,i]*) 返回最大項/ 成員, 如 max(12,56,5,45) 返回56
file
檔案操作
file
在python
是一個特殊的型別,它用於在python
程
序中對外部的檔案進行操作。在python
中一切都是物件,file
也不例外,file
有file
的
方法和屬性。下面先來看如何建立一個file
物件:
- file(name[, mode[, buffering]])
file()
函
數用於建立一個file
物件,它有一個別名叫open()
,可能更形象一些,它們是內建函式。來看
看它的引數。它引數都是以字串的形式傳遞的。name
是檔案的名字。
mode
是開啟的模式,可選的值為r w a U
,分別代表讀(預設) 寫 新增 支援各種換行符的模式。用w
或a
模
式開啟檔案的話,如果檔案不存在,那麼就自動建立。此外,用w
模式開啟一個已經存在的檔案時,原有檔案的內容會被清空,
因為一開始檔案的操作的標記是在檔案的開頭的,這時候進行寫操作,無疑會把原有的內容給抹掉。由於歷史的原因,換行符在不同的系統中有不同模式,比如在
unix
中是一個/n
,而在windows
中是‘/r/n’
,
用U
模式開啟檔案,就是支援所有的換行模式,也就說‘/r’ '/n' '/r/n'
都可表示換
行,會有一個tuple
用來存貯這個檔案中用到過的換行符。不過,雖說換行有多種模式,讀到python
中
統一用/n
代替。在模式 字元的後面,還可以加上+ b t
這兩種標識,分別表示可以對檔案同時進
行讀寫操作和用二進位制模式、文字模式(預設)開啟檔案。
buffering
如果為0
表示不進行緩衝;
如果為1
表
示進行“
行緩衝“;
如果是一個大於1
的數表示緩衝區的大小,應該是以字
節為單位的。
file
物件有自己的屬性和方法。先來看看file
的屬性。
- closed # 標記檔案是否已經關閉,由close() 改寫
- encoding # 檔案編碼
- mode # 打 開模式
- name # 文 件名
- newlines # 檔案中用到的換行模式,是一個tuple
- softspace #boolean 型,一般為0 ,據說用於print
file
的讀寫方法:
- F.read([size]) #size 為讀取的長度,以byte 為單位
- F.readline([size])
# 讀一行,如果定義了size , 有可能返回的只是一行的一部分 - F.readlines([size])
# 把檔案每一行作為一個list 的 一個成員,並返回這個list 。其實它的內部是通過迴圈呼叫readline() 來實現的。如果提 供size 引數,size 是表示讀取內容的總長,也就是說可能只讀到檔案的一部分。 - F.write(str)
# 把str 寫到檔案中,write() 並 不會在str 後加上一個換行符 - F.writelines(seq)
# 把seq 的內容全部寫到檔案 中。這個函式也只是忠實地寫入,不會在每行後面加上任何東西。
file 的 其他方法:
- F.close()
# 關閉檔案。python 會在一 個檔案不用後自動關閉檔案,不過這一功能沒有保證,最好還是養成自己關閉的習慣。如果一個檔案在關閉後還對其進行操作會產生ValueError - F.flush()
# 把緩衝區的內容寫入硬碟 - F.fileno()
# 返回一個長整型的” 檔案標籤“ - F.isatty()
# 檔案是否是一個終端裝置檔案(unix 系 統中的) - F.tell()
# 返回檔案操作標記的當前位置,以檔案的開頭為原點 - F.next()
# 返回下一行,並將檔案操作標記位移到下一行。把一個file 用 於for ... in file 這樣的語句時,就是呼叫next() 函式來實現遍歷的。 - F.seek(offset[,whence])
# 將檔案打操作標記移到offset 的 位置。這個offset 一般是相對於檔案的開頭來計算的,一般為正數。但如果提供了whence 參 數就不一定了, whence 可以為0 表示從頭開始計算,1 表示以當前 位置為原點計算。2 表示以檔案末尾為原點進行計算。需要注意,如果檔案以a 或a+ 的 模式開啟,每次進 行寫操作時,檔案操作標記會自動返回到檔案末尾。 - F.truncate([size])
# 把檔案裁成規定的大小,預設的是裁到當前檔案操作標記的位 置。如果size 比檔案的大小還要大,依據系統的不同可能是不改變檔案,也可能是用0 把檔案補到相 應的大小,也可能是以一些隨機的內容加上去。