dd = float("inf") # dd表示正無窮 ff = float('-inf') # ff表示負無窮
一、數據類型
python3中,有六個標准的數據類型:
- number 數字
- string 字符串
- list 列表
- tuple 元組
- sets 集合
-
dictionary 字典
此外還有 布爾值類型、時間類型。
關系測試: 關鍵字 in 判斷某個字符是否在字符串中;也可以判斷某個元素(或key)是否在列表、元組、集合、字典等中。
1、 數字number
Python3 支持 int、float、bool、complex(復數)。
在Python 3里,整數類型只有 int,即 不區分長整型和整型;
可以用type來查看類型,或者用isinstance來判斷數字類型:
-
>>>a=111 >>>isinstance(a,int) True
數字類型轉換:
-
int(x [,base]) 將x轉換為一個整數 float(x ) 將x轉換到一個浮點數 complex(real [,imag]) 創建一個復數 str(x) 將對象x轉換為字符串 repr(x) 將對象x轉換為表達式字符串 eval(str) 用來計算在字符串中的有效Python表達式,並返回一個對象 tuple(s) 將序列s轉換為一個元組 list(s) 將序列s轉換為一個列表 chr(x) 將一個整數轉換為一個字符(ASCII碼的十進制數字轉換為字符) unichr(x) 將一個整數轉換為Unicode字符 ord(x) 將一個字符轉換為它的整數值(字符轉換為ASCII的十進制數字) hex(x) 將一個整數轉換為一個十六進制字符串 oct(x) 將一個整數轉換為一個八進制字符串
數學函數:
-
下面的math是math模塊; abs(x) 返回數字的絕對值,如abs(-10) 返回 10 ceil(x) 返回數字的上入整數,如math.ceil(4.1) 返回 5 cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1 exp(x) 返回e的x次冪(ex),如math.exp(1) 返回2.718281828459045。e是一個常數為2.71828 fabs(x) 返回數字的絕對值,如math.fabs(-10) 返回10.0 floor(x) 返回數字的下舍整數,如math.floor(4.9)返回 4 log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 log10(x) 返回以10為基數的x的對數,如math.log10(100)返回 2.0 max(x1, x2,...) 返回給定參數的最大值,參數可以為序列。 min(x1, x2,...) 返回給定參數的最小值,參數可以為序列。 modf(x) 返回x的整數部分與小數部分,兩部分的數值符號與x相同,整數部分以浮點型表示。 pow(x, y) x**y 運算后的值。 round(x [,n]) 返回浮點數x的四舍五入值,如給出n值,則代表舍入到小數點后的位數。 sqrt(x) 返回數字x的平方根,數字可以為負數,返回類型為實數,如math.sqrt(4)返回 2+0j
2、 字符串 string
Python中的字符串用單引號(')或雙引號(")或三引號(''')括起來,同時使用反斜杠()轉義特殊字符。
字符串的截取的語法格式如下:
變量[頭下標:尾下標] 要頭不要尾
如:
a="wjzwz"
print(a[2:4]) #結果為 zw
print(a[2:]) #從第三個到最后
print(a[0]) #打印第一個
print(a[2:-1]) #打印第三個到倒數第二個字符
print(a[2::-1]) # 從第三個開始,-1表示從右往左取值,一個一個取。如果是-2表示從右往左,每隔一個取一個
print(a + "wjk") # 拼接字符串,以后拼接字符串更多的用字符串的join方法
注意:字符串的編碼問題。見python的編碼問題章節;
3、 列表list
List(列表) 是 Python 中使用最頻繁的數據類型。
列表可以完成大多數集合類的數據結構實現。列表中元素的類型可以不相同,它支持數字,字符串甚至可以包含列表(所謂嵌套)。列表是寫在方括號([])之間、用逗號分隔開的元素列表。和字符串一樣,列表同樣可以被索引和截取,列表被截取后返回一個包含所需元素的新列表。
列表截取的語法格式如下:
變量[頭下標:尾下標] 索引值以 0 為開始值,-1 為從末尾的開始位置。
加號(+)是列表連接運算符,星號(*)是重復操作。
此外,List內置了有很多方法: 見列表的內置函數章節。
4、 元組tuple
元組(tuple)與列表類似,不同之處在於元組的元素不能修改。元組寫在小括號()里,元素之間用逗號隔開。元組中元素類型可以不相同。
元組可以看做是不可修改的列表(list)。元組也可以進行切片和索引。雖然元組不可變,但是它可以包含可變的對象,如列表。
string、list和tuple都屬於sequence(序列)。當元組中只有一個元素時,也要有逗號,如: tuple=(20,)
數學函數:
cmp(tuple1, tuple2) #比較兩個元組元素。這個函數是python2的函數。python3中沒有
len(tuple) #計算元組元素個數。
max(tuple) #返回元組中元素最大值。
min(tuple) #返回元組中元素最小值。
tuple(seq) #將列表轉換為元組。
注:這里元組也可以是列表。
5、 集合set
集合(set)是一個無序不重復元素的序列。基本功能是進行成員關系測試和刪除重復元素。
可以使用大括號 { } 或者 set() 函數創建集合,注意:創建一個空集合必須用 set() 而不是 { },因為 { } 是用來創建一個空字典。
創建格式:
-
parame = {value01,value02,...} 或者 set(value)
舉例:
-
#!/usr/bin/env python3 student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'} print(student) # 輸出集合,重復的元素被自動去掉 # 成員測試 if('Rose' in student) : print('Rose 在集合中') else : print('Rose 不在集合中') # set可以進行集合運算 a = set('abracadabra') b = set('alacazam') print(a) # 打印 set(['a', 'r', 'b', 'c', 'd']) print(a - b) # a和b的差集,打印 set(['r', 'b', 'd']) print(a | b) # a和b的並集,打印 set(['a', 'c', 'b', 'd', 'm', 'l', 'r', 'z']) print(a & b) # a和b的交集,打印 set(['a', 'c']) print(a ^ b) # a和b中不同時存在的元素,打印 set(['b', 'd', 'm', 'l', 'r', 'z'])
6、 字典dictionary
字典(dictionary)是Python中另一個非常有用的內置數據類型。
列表是有序的對象結合,字典是無序的對象集合。兩者之間的區別在於:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。
字典是一種映射類型,字典用"{ }"標識,它是一個無序的鍵(key) : 值(value)對集合。
鍵(key)必須使用不可變類型。在同一個字典中,鍵(key)必須是唯一的。
另外,字典類型也有一些內置的函數,例如clear()、keys()、values()等。
注意:
1、字典是一種映射類型,它的元素是鍵值對。
2、字典的關鍵字必須為不可變類型,且不能重復。
3、創建空字典使用 { }。
字典的增刪改查:
dict = {'name': 'Zara', 'age': 7, 'class': 'First'};
dict["age"]=27; #修改已有鍵的值
dict["school"]="wutong"; #增加新的鍵/值對
del dict['name']; # 刪除鍵是'name'的條目
dict.clear(); # 清空詞典所有條目
del dict ; # 刪除詞典,del也可以刪除任何變量,如列表、元組、字符串等等對象;
函數對字典的操作:
len(dict) 計算字典元素個數,即鍵的總數。
str(dict) 輸出字典可打印的字符串表示。
type(dict) 返回輸入的變量類型,如果變量是字典就返回字典類型。
字典的內置函數(python3):見字典內置函數章節。 補充一個python2的內置方法:
radiansdict.has_key(key) 如果鍵在字典dict里返回true,否則返回false
字典可以嵌套,即字典中key對應的value可以是一個字典等任意對象。
7、布爾值
-
任何非零數字或非空對象都為真;
-
數字零、空對象以及特殊對象None都被認作是假;
-
比較和相等測試會遞歸地應用在數據結構中;
-
比較和相等測試會返回True或False(1和0的特殊版本);
-
布爾and和or運算符會返回真或假的操作對象;
邏輯運算遵循短路原則,見運算符章節的邏輯運算部分。
二、格式化輸出
在python中,字符串的格式化輸出,一般都是使用占位符實現。
如下:
name = input("input your name:")
age = input("input your age:")
if age.isdigit():
age = int(age)
else:
print("must input digit")
exit() #這兩句可以合並為 exit("must input digit")
msg='''------------ info of %s ---------
Name: %s
age: %s
''' %(name,name,age) # 這里的%s為占位符
print(msg)
格式化占位符:
%s 打印字符串 print ("His name is %s"%("wj")) %d 打印整數 print ("He is %d years old"%(25)) %f 打印浮點數,默認精度為保留6位小數 print ("His height is %f m"%(1.71)) %.2f 打印浮點數(指定保留小數點位數) print ("His height is %.2f m"%(1.71)) %8d 指定占位符寬度,前面加空格補充 print ("Name:%10s Age:%8d Height:%8.2f"%("wj",25,1.71)) %-10s 指定占位符寬度(左對齊) print ("Name:%-10s Age:%-8d Height:%-8.2f"%("wj",25,1.71)) %08d 指定占位符(用0當占位符補充;8前面的0,如果沒有,默認是空格) print ("Name:%-10s Age:%08d Height:%08.2f"%("wj",25,1.71))
另外,格式化輸出,可以使用字符串的內置方法format方法。見字符串內置方法章節format方法。