Python3 常用資料型別語法

覆手為雲p發表於2017-06-07

 

1、int型別

int型別的資料是沒有長度限制的,它的最大長度只與計算機的記憶體有關。

1 bin(i)      返回二進位制表示結果,
2 hex(i)      十六進位制,
3 int(i)       整數(如果x是浮點數就會返回其整數部分,
4 oct(i)      八進位制,
5 int(s,base)將字串轉換為整數.冪可以用**實現(10**5,2**4).內建的float與str型別都支援到整數的轉換。
6 chr()       將數字轉換成字元,
7 ord()       將字元轉換成ASCII碼;
8 round()   函式對值進行四捨五入。整數和浮點數相加結果是浮點型。

2、簡單比較兩個float是否相等

       def equal_float(a,b):
              return abs(a-b)<=sys.float_info.epsilon

3、複數

複數的表示需在虛部後加一個j,如z=3.5+2j,其中實部和虛部可分別用z.real,z.imag取得。專用函式z.conjugate()可以反轉虛部的符號。

4、Decimal

特點:精度高,但計算速度比float慢,使用前需引進模組。

       a=decimal.Decimal(5555)或a=decimal.Decimal("555.555")

5、字串

對字串內使用的單引號或者雙引號,如果與最外層的相同則需要進行轉義,如果不同則可以直接使用。

字串轉義:

\newline 忽略換行,

\\           反斜槓,

\'            單引號,

\"           雙引號,

\a           蜂鳴,

\b           退格,

\f            走紙,

\n           換行,

\r           回車,

\t           製表符。

6、負索引

即從-1開始從末尾倒數。

7、字串的分片操作(seq[start:end];seq[start:end:step]

seq[start:end],表示兩個位置之間的字元(區間為左閉右開,即[start,end)),無start則預設為0,無end則預設為len(seq),

seq[:]表示整個字串。

字串的追加可用+=,但並不是特別高效,連線大量字串可用seq.join()。

"xx".join(seq)則可以將xx依次插入每兩個seq元素之間,形成一個str。

seq[star:end:step]與前一種類似,但是step不能為空,且必須大於0,即步長。

8、reversed()反轉一個集合內元素的排列順序。

9、字元查詢(index(),find())

    find()找到目標時返回該字元在字串中的索引位置,沒找到則返回-1;index()找到時也返回索引位置,沒找到則產生一個ValueError異常。函式前邊加r的(rfind(),rindex())表示逆序開始查詢。

    find()、index都可接受至多兩個可選引數(起點、終點):

    str.find("m",6)=str[6:].find("m")

    str.find("m",2,5)=str[2:5].find("m")

    類似的函式還有:str.count(),str.endswith(),str.startswith()。

10、字串分割partition(),rpartition(),split(),strip()

    patition()將字串分割為三段:關鍵字前,關鍵字,關鍵字後.

    split()將字串以關鍵字為分割點進行分割(結果不包含關鍵字)

    strip()將字串的首尾空格去掉,如果給了引數,就去掉首尾的引數,但引數必須是位於字串的首尾,不然去不掉.分支函式lstrip(),rstrip()為去掉左邊或者右邊的末端空格或字元.

11、字串的格式化 str.format()

       1>"a{0}cd{1}".format("one","two")。被替換字元用{}包圍,用數字格式表示時0,1依次表示format內給定引數的索引位置。如要想在替換後的字串中出現花括號,則需在原字串中進行復寫或三寫({{0}},{{{1}}})。對於3.1以上的python,{}內可以為空,不寫索引值,系統會預設次數下去為空的{}索引值為0,1,2,3...

       這種替換方法還可用來解決字串與數字連線會產生TypeError異常的問題。

       2>"a{who} was {0}".format(12,who="she")  欄位名替代索引方法如左,但如果同時存在欄位名和索引時,索引位置須放置在索引之前,如樣例中不能將0改成1而把對應的引數12放在第二位。

       3>對於一個集合(如:stock=["a","b","c"])可用:"{0[1]}{0[2]}".format(stock)

對於一個字典(如d=dic(a1="xx",a2="xxx")可用:"{0[a1]}{0[a2]}".format(d) 或者:"{a1}{a2}".format(**d)   **在此處為對映拆分操作符,對於已經賦值的變數也可結合內建的locals()函式以相似的方法達成替換,c="xx";d=34;"{c}ad{d}".format(**locals())。

       4>格式轉換(r,s,a)用法:{0!r}

       s-強制使用字串格式,r-強制使用表象形式,a-強制使用表象形式(只限於ASCII字元)

       5>字串格式規約(樣:"{0:*>10.25}"):以冒號開始,接著為充填字元(*),然後為對齊字元(>右對齊,<左對齊,^居中對齊),10為最小寬度,25為最大寬度,最大寬度前用"."引導。所有引數都是可選的,但如果指定了充填符就必須同時指定一個對齊符(對齊符可單獨出現,結果以空格充填)

       >整數格式規約(樣:"{0:0^+#15X):與字元的大致相同,+為可選,位於對齊與最小寬度之間(表示必須輸出正負號,還有-表示只用輸出負號,空格表示正數輸出空格負數輸出負號),#位於最小寬度之前,用於輸入當前資料型別,#也可以用0替換(表示用0進行充填,此充填法可不指定對齊方式);X表示輸出資料轉換型別(b二進位制,o八進位制,x小寫十六進位制,X大寫十六進位制,d十進位制,c輸出整數對應的Unicode字元,n表示場所敏感輸出方式:       import locale

       locale.setlocale(locale.LC_ALL,"C") #C為場所,也可用en_US.UTF-8替換

       c="{0:n}".format(55)

         )。整數規約沒有最大寬度!

       >小數格式規約:與整數一樣,但可以在最小寬度後加個以"."引導的整數來限定小數的位數。資料型別轉換處可用:e,E指數形式,f標準浮點形式,g通常格式,%百分數形式。

tips:輸出平方的上標 N\{SUPERSCRIPT TWO},右箭頭:\N{RIGHTWARDS ARROW}

 

12、字串操作函式

 1 s.strip(chars)見上;
 2 s.find(x,start,end)見上;
 3 s.index(x.start,end)見上;
 4 s.format()見上;
 5 s.partition(x)見上;
 6 s.replace(x,y,n)    用y替換x,可選n表示最多替換n次;
 7 s.split(x,n)       最多分割n次,s.rsplit()從右邊開始分割;
 8 s.splitlines(f)     返回在行終結符處進行分割產生的列表,並剝離行終結符(除非f為True);
 9 s.count(x,start,end)  計數;
10 s.join(seq)       返回seq的每個項都以s連線起來的結果,s可以為空;
11 s.capitalize()       將字串首字母大寫;
12 s.lower()         將s中的字元變為小寫;
13 s.upper()         返回大寫化版本;
14 s.title()        將每個單詞的首字母大寫;
15 s.swapcase()      將大寫變小寫,小寫變大寫;
16 s.islower()       如果s至少有一個可小寫的字元且所有可小寫的字元都是小寫則返回True;
17 s.isupper()       如果s至少有一個可大寫的字元且所有可大寫的字元都是大寫則返回True;
18 s.istitle()       如果s是一個非空的首字母大寫字串,則返回True;
19 s.zfill(w)       返回s的副本,如果比w短,從開始處用0補充,使長度和w一樣;
20 s.center(width,char)  返回一個以s為中心長度為width的字串,如果有空餘則用可選引數char或空格進行填充,如width<len(s),則返回整個s;
21 s.ljust(width,char)  同上,左對齊;
22 s.rjust(width,char)  同上,右對齊;
23 s.encode(endoding,err) 返回一個bytes物件,該物件使用預設的編碼格式或指定的編碼格式來表示該字串,並根據可選的err引數處理錯誤;
24 s.endswith(x,start,end)如果以x結尾則返回True,否則返回False;
25 s.startswith(x,start,end)如果以x開始則返回True;
26 s.expandtabbs(size)  返回s的一個副本,其中的製表符使用8個或指定數量的空格替換;
27 s.isalnum()       判斷是否全是字母數字且非空;
28 s.isalpha()       判斷是否全是字母且非空;
29 s.isdecimal()      判斷是否每個字元都是Unicode的基數為10的數字;
30 s.isdigit()       判斷是否每個字元都是ASCII數字;
31 s.isidentifier()    判斷是否不為空
32 s.isnumeric()      判斷是否每個字元都是數值型的Unicode字元且非空;
33 s.isprintable()    判斷是否每個字元都是可列印的且非空;
34 s.isspace()       判斷是否每個字元都是空白字元;
35 s.maketrans()
36 s.translate()

 

相關文章