一、python是一門編程語言,它是衆多編程語言中的一種; html
二、語法簡潔、優雅、編寫的程序容易閱讀; python
三、跨平臺,可運行在Windows、Linux以及MacOS; git
四、易於學習。站在非計算機專業的角度來說,若是把編程看成解決問題的工具,python確實相較於C++、Java、JavaScript等語言要易於學習和掌握; 程序員
五、極爲強大的標準庫與第三方庫,好比電子郵件,好比圖形GUI界面;web
六、python是面向對象的語言;(面向對象就是一個思想) 算法
一、簡潔,靈活,優雅,哲學;(python之禪) express
二、易於上手難於精通; 編程
三、python既有動態腳本的特性,又有面向對象的特性,很是具備本身的特色; api
四、應用:爬蟲,大數據,測試,web,AI,腳本處理 數組
一、慢(感受不到),相較於C、C++、Java,運行效率較慢 編譯型語言(C,C++)、解釋型語言(JavaScript,python),Java和C##是一箇中間語言(他們的歸類不重要) 運行效率與開發效率,魚和熊掌不可兼得,語言適合的纔是最好的 一個學習編程的經典誤區 世界上不是隻有web,還有許多的問題須要使用編程來解決。不要把思惟侷限在web上,這只是編程的一個應用方向
一、爬蟲
二、大數據與數據分析(Spark)
三、自動化運維與自動化測試
四、Web開發:Flask,Django
五、機器學習(Tensor Flow)
六、膠水語言:混合其餘如C++、Java等來編程。可以把用其餘語言製做的各類模塊(尤爲是C/C++)很輕鬆地聯合在一塊兒 怎麼面對python:當你遇到問題是,隨手拿起python,編寫一個工具,這纔是python的正確打開方式
默認狀況下,Python 3 源碼文件以 UTF-8 編碼,全部字符串都是 unicode 字符串。 固然你也能夠爲源碼文件指定不一樣的編碼:
# -*- coding: cp-1252 -*-複製代碼
上述定義容許在源文件中使用 Windows-1252 字符集中的字符編碼,對應適合語言爲保加利亞語、白羅斯語、馬其頓語、俄語、塞爾維亞語。
在 Python 3 中,能夠用中文做爲變量名,非 ASCII 標識符也是容許的了。
保留字即關鍵字,咱們不能把它們用做任何標識符名稱。Python 的標準庫提供了一個 keyword 模塊,能夠輸出當前版本的全部關鍵字:
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def',
'del','elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in',
'is', 'lambda', 'nonlocal','not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with',
'yield']複製代碼
Python中單行註釋以 # 開頭,實例以下:
實例(Python 3.0+)
# 第一個註釋
print ("Hello, Python!") # 第二個註釋複製代碼
執行以上代碼,輸出結果爲:
Hello, Python!複製代碼
多行註釋能夠用多個 # 號,還有 ''' 和 """:
實例(Python 3.0+)
# 第一個註釋
# 第二個註釋
''' 第三註釋 第四註釋 '''
""" 第五註釋 第六註釋 """
print ("Hello, Python!")複製代碼
執行以上代碼,輸出結果爲:
Hello, Python!複製代碼
python最具特點的就是使用縮進來表示代碼塊,不須要使用大括號 {} 。
縮進的空格數是可變的,可是同一個代碼塊的語句必須包含相同的縮進空格數。實例以下:
實例(Python 3.0+)
if True:
print ("True")
else:
print ("False")複製代碼
如下代碼最後一行語句縮進數的空格數不一致,會致使運行錯誤:
if True:
print ("Answer")
print ("True")
else:
print ("Answer")
print ("False") # 縮進不一致,會致使運行錯誤複製代碼
以上程序因爲縮進不一致,執行後會出現相似如下錯誤:
File "test.py", line 6
print ("False") # 縮進不一致,會致使運行錯誤
^
IndentationError: unindent does not match any outer indentation level複製代碼
Python 一般是一行寫完一條語句,但若是語句很長,咱們可使用反斜槓(\)來實現多行語句,例如:
total = item_one + \
item_two + \
item_three複製代碼
在 [], {}, 或 () 中的多行語句,不須要使用反斜槓(\),例如:
total = ['item_one', 'item_two', 'item_three',
'item_four', 'item_five']複製代碼
python中數字有四種類型:整數、布爾型、浮點數和複數。
word = '字符串'
sentence = "這是一個句子。"
paragraph = """這是一個段落, 能夠由多行組成"""複製代碼
實例(Python 3.0+)
str='Runoob'
print(str) # 輸出字符串
print(str[0:-1]) # 輸出第一個到倒數第二個的全部字符
print(str[0]) # 輸出字符串第一個字符
print(str[2:5]) # 輸出從第三個開始到第五個的字符
print(str[2:]) # 輸出從第三個開始後的全部字符
print(str * 2) # 輸出字符串兩次
print(str + '你好') # 鏈接字符串
print('------------------------------')
print('hello\nrunoob') # 使用反斜槓(\)+n轉義特殊字符
print(r'hello\nrunoob') # 在字符串前面添加一個 r,表示原始字符串,不會發生轉義複製代碼
這裏的 r 指 raw,即 raw string。
輸出結果爲:
Runoob
Runoo
R
noo
noob
RunoobRunoob
Runoob你好
------------------------------
hello
runoob
hello\nrunoob複製代碼
函數之間或類的方法之間用空行分隔,表示一段新的代碼的開始。類和函數入口之間也用一行空行分隔,以突出函數入口的開始。
空行與代碼縮進不一樣,空行並非Python語法的一部分。書寫時不插入空行,Python解釋器運行也不會出錯。可是空行的做用在於分隔兩段不一樣功能或含義的代碼,便於往後代碼的維護或重構。
記住:空行也是程序代碼的一部分。
執行下面的程序在按回車鍵後就會等待用戶輸入:
實例(Python 3.0+)
input("\n\n按下 enter 鍵後退出。")複製代碼
以上代碼中 ,"\n\n"在結果輸出前會輸出兩個新的空行。一旦用戶按下 enter 鍵時,程序將退出。
Python能夠在同一行中使用多條語句,語句之間使用分號(;)分割,如下是一個簡單的實例:
實例(Python 3.0+)
import sys; x = 'runoob'; sys.stdout.write(x + '\n')複製代碼
使用腳本執行以上代碼,輸出結果爲:
runoob複製代碼
使用交互式命令行執行,輸出結果爲:
>>> import sys; x = 'runoob'; sys.stdout.write(x + '\n')
runoob
7複製代碼
此處的 7 表示字符數。
縮進相同的一組語句構成一個代碼塊,咱們稱之代碼組。
像if、while、def和class這樣的複合語句,首行以關鍵字開始,以冒號( : )結束,該行以後的一行或多行代碼構成代碼組。
咱們將首行及後面的代碼組稱爲一個子句(clause)。
以下實例:
if expression :
suite
elif expression :
suite
else :
suite複製代碼
print 默認輸出是換行的,若是要實現不換行須要在變量末尾加上 end="":
實例(Python 3.0+)
x="a"
y="b"
# 換行輸出
print( x )
print( y )
print('---------')
# 不換行輸出
print( x, end=" " )
print( y, end=" " )
print()複製代碼
以上實例執行結果爲:
a
b
---------
a b複製代碼
在 python
用 import
或者 from...import
來導入相應的模塊。
將整個模塊(somemodule)導入,格式爲: import somemodule
從某個模塊中導入某個函數,格式爲: from somemodule import somefunction
從某個模塊中導入多個函數,格式爲: from somemodule import firstfunc, secondfunc, thirdfunc
將某個模塊中的所有函數導入,格式爲: from somemodule import *
import sys
print('================Python import mode==========================')
print ('命令行參數爲:')
for i in sys.argv:
print (i)
print ('\n python 路徑爲',sys.path)複製代碼
from sys import argv,path # 導入特定的成員
print('================python from import===================================')
print('path:',path) # 由於已經導入path成員,因此此處引用時不須要加sys.path複製代碼
不少程序能夠執行一些操做來查看一些基本信息,Python可使用-h參數查看各參數幫助信息:
$ python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-c cmd : program passed in as string (terminates option list)
-d : debug output from parser (also PYTHONDEBUG=x)
-E : ignore environment variables (such as PYTHONPATH)
-h : print this help message and exit
[ etc. ]複製代碼
Python 中的變量不須要聲明。每一個變量在使用前都必須賦值,變量賦值之後該變量纔會被建立。
在 Python 中,變量就是變量,它沒有類型,咱們所說的"類型"是變量所指的內存中對象的類型。
等號(=)用來給變量賦值。
等號(=)運算符左邊是一個變量名,等號(=)運算符右邊是存儲在變量中的值。例如:
實例(Python 3.0+)
counter = 100 # 整型變量
miles = 1000.0 # 浮點型變量
name = "runoob" # 字符串
print (counter)
print (miles)
print (name)複製代碼
執行以上程序會輸出以下結果:
100
1000.0
runoob複製代碼
Python容許你同時爲多個變量賦值。例如:
a = b = c = 1複製代碼
以上實例,建立一個整型對象,值爲 1,從後向前賦值,三個變量被賦予相同的數值。
您也能夠爲多個對象指定多個變量。例如:
a, b, c = 1, 2, "runoob"複製代碼
以上實例,兩個整型對象 1 和 2 的分配給變量 a 和 b,字符串對象 "runoob" 分配給變量 c。
Python3 中有六個標準的數據類型:
Python3 的六個標準數據類型中:
Python3 支持 int(整數)、float(浮點數)、bool(布爾)、complex(複數)。
在Python 3裏,只有一種整數類型 int
,表示爲長整型,沒有 python2 中的 Long。
像大多數語言同樣,數值類型的賦值和計算都是很直觀的。
內置的 type()
函數能夠用來查詢變量所指的對象類型。
>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>複製代碼
此外還能夠用 isinstance
來判斷:
實例
>>>a = 111
>>> isinstance(a, int)
True
>>>複製代碼
isinstance
和 type
的區別在於:
type()
不會認爲子類是一種父類類型。isinstance()
會認爲子類是一種父類類型。>>> class A:
... pass
...
>>> class B(A):
... pass
...
>>> isinstance(A(), A)
True
>>> type(A()) == A
True
>>> isinstance(B(), A)
True
>>> type(B()) == A
False複製代碼
注意:在 Python2 中是沒有布爾型的,它用數字 0 表示 False,用 1 表示 True。到 Python3 中,把 True 和 False 定義成關鍵字了,但它們的值仍是 1 和 0,它們能夠和數字相加。
當你指定一個值時,Number 對象就會被建立:
var1 = 1
var2 = 10複製代碼
您也可使用del語句刪除一些對象引用。
del語句的語法是:
del var1[,var2[,var3[....,varN]]]複製代碼
您能夠經過使用del語句刪除單個或多個對象。例如:
del var
del var_a, var_b複製代碼
實例
>>>5 + 4 # 加法
9
>>> 4.3 - 2 # 減法
2.3
>>> 3 * 7 # 乘法
21
>>> 2 / 4 # 除法,獲得一個浮點數
0.5
>>> 2 // 4 # 除法,獲得一個整數
0
>>> 17 % 3 # 取餘
2
>>> 2 ** 5 # 乘方
32複製代碼
注意:
int | float | complex |
---|---|---|
10 | 0.0 | 3.14j |
100 | 15.20 | 45.j |
-786 | -21.9 | 9.322e-36j |
080 | 32.3e+18 | .876j |
-0490 | -90. | -.6545+0J |
-0x260 | -32.54e100 | 3e+26J |
0x69 | 70.2E-12 | 4.53e-7j |
Python還支持複數,複數由實數部分和虛數部分構成,能夠用a + bj,或者complex(a,b)表示, 複數的實部a和虛部b都是浮點型
Python中的字符串用單引號 ' 或雙引號 " 括起來,同時使用反斜槓 \ 轉義特殊字符。
字符串的截取的語法格式以下:
變量[頭下標:尾下標]複製代碼
索引值以 0 爲開始值,-1 爲從末尾的開始位置。
加號 + 是字符串的鏈接符, 星號 * 表示複製當前字符串,緊跟的數字爲複製的次數。實例以下:
實例
str = 'Runoob'
print (str) # 輸出字符串
print (str[0:-1]) # 輸出第一個到倒數第二個的全部字符
print (str[0]) # 輸出字符串第一個字符
print (str[2:5]) # 輸出從第三個開始到第五個的字符
print (str[2:]) # 輸出從第三個開始的後的全部字符
print (str * 2) # 輸出字符串兩次
print (str + "TEST") # 鏈接字符串複製代碼
執行以上程序會輸出以下結果:
Runoob
Runoo
R
noo
noob
RunoobRunoob
RunoobTEST複製代碼
Python 使用反斜槓(\)轉義特殊字符,若是你不想讓反斜槓發生轉義,能夠在字符串前面添加一個 r,表示原始字符串:
>>> print('Ru\noob')
Ru
oob
>>> print(r'Ru\noob')
Ru\noob
>>> 複製代碼
另外,反斜槓(\)能夠做爲續行符,表示下一行是上一行的延續。也可使用 """...""" 或者 '''...''' 跨越多行。
注意,Python 沒有單獨的字符類型,一個字符就是長度爲1的字符串。
實例
>>>word = 'Python'
>>> print(word[0], word[5])
P n
>>> print(word[-1], word[-6])
n P複製代碼
與 C 字符串不一樣的是,Python 字符串不能被改變。向一個索引位置賦值,好比word[0] = 'm'會致使錯誤。
注意:
List(列表) 是 Python 中使用最頻繁的數據類型。
列表能夠完成大多數集合類的數據結構實現。列表中元素的類型能夠不相同,它支持數字,字符串甚至能夠包含列表(所謂嵌套)。
列表是寫在方括號 [] 之間、用逗號分隔開的元素列表。
和字符串同樣,列表一樣能夠被索引和截取,列表被截取後返回一個包含所需元素的新列表。
列表截取的語法格式以下:
變量[頭下標:尾下標]複製代碼
索引值以 0 爲開始值,-1 爲從末尾的開始位置。
加號 + 是列表鏈接運算符,星號 * 是重複操做。以下實例:
實例
list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
tinylist = [123, 'runoob']
print (list) # 輸出完整列表
print (list[0]) # 輸出列表第一個元素
print (list[1:3]) # 從第二個開始輸出到第三個元素
print (list[2:]) # 輸出從第三個元素開始的全部元素
print (tinylist * 2) # 輸出兩次列表
print (list + tinylist) # 鏈接列表複製代碼
以上實例輸出結果:
['abcd', 786, 2.23, 'runoob', 70.2]
abcd
[786, 2.23]
[2.23, 'runoob', 70.2]
[123, 'runoob', 123, 'runoob']
['abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob']複製代碼
與Python字符串不同的是,列表中的元素是能夠改變的:
實例
>>>a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9
>>> a[2:5] = [13, 14, 15]
>>> a
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = [] # 將對應的元素值設置爲 []
>>> a
[9, 2, 6]複製代碼
List 內置了有不少方法,例如 append()、pop() 等等,這在後面會講到。
注意:
Python 列表截取能夠接收第三個參數,參數做用是截取的步長,如下實例在索引 1 到索引 4 的位置並設置爲步長爲 2(間隔一個位置)來截取字符串:
若是第三個參數爲負數表示逆向讀取,如下實例用於翻轉字符串:
實例
def reverseWords(input):
# 經過空格將字符串分隔符,把各個單詞分隔爲列表
inputWords = input.split(" ")
# 翻轉字符串
# 假設列表 list = [1,2,3,4],
# list[0]=1, list[1]=2 ,而 -1 表示最後一個元素 list[-1]=4 ( 與 list[3]=4 同樣)
# inputWords[-1::-1] 有三個參數
# 第一個參數 -1 表示最後一個元素
# 第二個參數爲空,表示移動到列表末尾
# 第三個參數爲步長,-1 表示逆向
inputWords=inputWords[-1::-1]
# 從新組合字符串
output = ' '.join(inputWords)
return output
if __name__ == "__main__":
input = 'I like runoob'
rw = reverseWords(input)
print(rw)複製代碼
輸出結果爲:
runoob like I複製代碼
元組(tuple)與列表相似,不一樣之處在於元組的元素不能修改。元組寫在小括號 () 裏,元素之間用逗號隔開。
元組中的元素類型也能夠不相同:
實例
tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2 )
tinytuple = (123, 'runoob')
print (tuple) # 輸出完整元組
print (tuple[0]) # 輸出元組的第一個元素
print (tuple[1:3]) # 輸出從第二個元素開始到第三個元素
print (tuple[2:]) # 輸出從第三個元素開始的全部元素
print (tinytuple * 2) # 輸出兩次元組
print (tuple + tinytuple) # 鏈接元組複製代碼
以上實例輸出結果:
('abcd', 786, 2.23, 'runoob', 70.2)
abcd
(786, 2.23)
(2.23, 'runoob', 70.2)
(123, 'runoob', 123, 'runoob')
('abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob')複製代碼
元組與字符串相似,能夠被索引且下標索引從0開始,-1 爲從末尾開始的位置。也能夠進行截取(看上面,這裏再也不贅述)。
其實,能夠把字符串看做一種特殊的元組。
實例
>>>tup = (1, 2, 3, 4, 5, 6)
>>> print(tup[0])
1
>>> print(tup[1:5])
(2, 3, 4, 5)
>>> tup[0] = 11 # 修改元組元素的操做是非法的
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>>複製代碼
雖然tuple的元素不可改變,但它能夠包含可變的對象,好比list列表。
構造包含 0 個或 1 個元素的元組比較特殊,因此有一些額外的語法規則:
tup1 = () # 空元組
tup2 = (20,) # 一個元素,須要在元素後添加逗號複製代碼
string、list 和 tuple 都屬於 sequence(序列)。
注意:
集合(set)是由一個或數個形態萬千的大小總體組成的,構成集合的事物或對象稱做元素或是成員。
基本功能是進行成員關係測試和刪除重複元素。
可使用大括號 { } 或者 set() 函數建立集合,注意:建立一個空集合必須用 set() 而不是 { },由於 { } 是用來建立一個空字典。
建立格式:
parame = {value01,value02,...}
或者
set(value)複製代碼
實例
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)
print(a - b) # a 和 b 的差集
print(a | b) # a 和 b 的並集
print(a & b) # a 和 b 的交集
print(a ^ b) # a 和 b 中不一樣時存在的元素複製代碼
以上實例輸出結果:
{'Mary', 'Jim', 'Rose', 'Jack', 'Tom'}
Rose 在集合中
{'b', 'a', 'c', 'r', 'd'}
{'b', 'd', 'r'}
{'l', 'r', 'a', 'c', 'z', 'm', 'b', 'd'}
{'a', 'c'}
{'l', 'r', 'z', 'm', 'b', 'd'}複製代碼
字典(dictionary)是Python中另外一個很是有用的內置數據類型。
列表是有序的對象集合,字典是無序的對象集合。二者之間的區別在於:字典當中的元素是經過鍵來存取的,而不是經過偏移存取。
字典是一種映射類型,字典用 { } 標識,它是一個無序的 鍵(key) : 值(value) 的集合。
鍵(key)必須使用不可變類型。
在同一個字典中,鍵(key)必須是惟一的。
實例
dict = {}
dict['one'] = "1 - 菜鳥教程"
dict[2] = "2 - 菜鳥工具"
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
print (dict['one']) # 輸出鍵爲 'one' 的值
print (dict[2]) # 輸出鍵爲 2 的值
print (tinydict) # 輸出完整的字典
print (tinydict.keys()) # 輸出全部鍵
print (tinydict.values()) # 輸出全部值複製代碼
以上實例輸出結果:
1 - 菜鳥教程
2 - 菜鳥工具
{'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'}
dict_keys(['name', 'code', 'site'])
dict_values(['runoob', 1, 'www.runoob.com'])複製代碼
構造函數 dict() 能夠直接從鍵值對序列中構建字典以下:
實例
>>>dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
{'Taobao': 3, 'Runoob': 1, 'Google': 2}
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
>>> dict(Runoob=1, Google=2, Taobao=3)
{'Runoob': 1, 'Google': 2, 'Taobao': 3}複製代碼
另外,字典類型也有一些內置的函數,例如clear()、keys()、values()等。
注意:
有時候,咱們須要對數據內置的類型進行轉換,數據類型的轉換,你只須要將數據類型做爲函數名便可。
如下幾個內置的函數能夠執行數據類型之間的轉換。這些函數返回一個新的對象,表示轉換的值。
函數 | 描述 |
---|---|
將x轉換爲一個整數 |
|
將x轉換到一個浮點數 |
|
建立一個複數 |
|
將對象 x 轉換爲字符串 |
|
將對象 x 轉換爲表達式字符串 |
|
用來計算在字符串中的有效Python表達式,並返回一個對象 |
|
將序列 s 轉換爲一個元組 |
|
將序列 s 轉換爲一個列表 |
|
轉換爲可變集合 |
|
建立一個字典。d 必須是一個 (key, value)元組序列。 |
|
轉換爲不可變集合 |
|
將一個整數轉換爲一個字符 |
|
將一個字符轉換爲它的整數值 |
|
將一個整數轉換爲一個十六進制字符串 |
|
將一個整數轉換爲一個八進制字符串 |
確保對模塊, 函數, 方法和行內註釋使用正確的風格
Python中的註釋有單行註釋和多行註釋:
Python中單行註釋以 # 開頭,例如::
多行註釋用三個單引號 ''' 或者三個雙引號 """ 將註釋括起來,例如:
''' 這是多行註釋,用三個單引號 這是多行註釋,用三個單引號 這是多行註釋,用三個單引號 '''
print("Hello, World!")複製代碼
""" 這是多行註釋,用三個雙引號 這是多行註釋,用三個雙引號 這是多行註釋,用三個雙引號 """
print("Hello, World!")複製代碼
本章節主要說明Python的運算符。舉個簡單的例子 4 +5 = 9 。 例子中,4 和 5 被稱爲操做數,"+" 稱爲運算符。
Python語言支持如下類型的運算符:
接下來讓咱們一個個來學習Python的運算符。
如下假設變量a爲10,變量b爲21:
運算符 | 描述 | 實例 |
---|---|---|
+ | 加 - 兩個對象相加 | a + b 輸出結果 31 |
- | 減 - 獲得負數或是一個數減去另外一個數 | a - b 輸出結果 -11 |
* | 乘 - 兩個數相乘或是返回一個被重複若干次的字符串 | a * b 輸出結果 210 |
/ | 除 - x 除以 y | b / a 輸出結果 2.1 |
% | 取模 - 返回除法的餘數 | b % a 輸出結果 1 |
** | 冪 - 返回x的y次冪 | a**b 爲10的21次方 |
// | 取整除 - 向下取接近除數的整數 | >>> 9//2
4
>>> -9//2
-5複製代碼 |
如下實例演示了Python全部算術運算符的操做:
實例(Python 3.0+)
#!/usr/bin/python3
a = 21
b = 10
c = 0
c = a + b
print ("1 - c 的值爲:", c)
c = a - b
print ("2 - c 的值爲:", c)
c = a * b
print ("3 - c 的值爲:", c)
c = a / b
print ("4 - c 的值爲:", c)
c = a % b
print ("5 - c 的值爲:", c)
# 修改變量 a 、b 、c
a = 2
b = 3
c = a**b
print ("6 - c 的值爲:", c)
a = 10
b = 5
c = a//b
print ("7 - c 的值爲:", c)複製代碼
以上實例輸出結果:
1 - c 的值爲: 31
2 - c 的值爲: 11
3 - c 的值爲: 210
4 - c 的值爲: 2.1
5 - c 的值爲: 1
6 - c 的值爲: 8
7 - c 的值爲: 2複製代碼
如下假設變量a爲10,變量b爲20:
運算符 | 描述 | 實例 |
---|---|---|
== | 等於 - 比較對象是否相等 | (a == b) 返回 False。 |
!= | 不等於 - 比較兩個對象是否不相等 | (a != b) 返回 True。 |
> | 大於 - 返回x是否大於y | (a > b) 返回 False。 |
< | 小於 - 返回x是否小於y。全部比較運算符返回1表示真,返回0表示假。這分別與特殊的變量True和False等價。注意,這些變量名的大寫。 | (a < b) 返回 True。 |
>= | 大於等於 - 返回x是否大於等於y。 | (a >= b) 返回 False。 |
<= | 小於等於 - 返回x是否小於等於y。 | (a <= b) 返回 True。 |
如下實例演示了Python全部比較運算符的操做:
實例(Python 3.0+)
#!/usr/bin/python3
a = 21
b = 10
c = 0
if ( a == b ):
print ("1 - a 等於 b")
else:
print ("1 - a 不等於 b")
if ( a != b ):
print ("2 - a 不等於 b")
else:
print ("2 - a 等於 b")
if ( a < b ):
print ("3 - a 小於 b")
else:
print ("3 - a 大於等於 b")
if ( a > b ):
print ("4 - a 大於 b")
else:
print ("4 - a 小於等於 b")
# 修改變量 a 和 b 的值
a = 5;
b = 20;
if ( a <= b ):
print ("5 - a 小於等於 b")
else:
print ("5 - a 大於 b")
if ( b >= a ):
print ("6 - b 大於等於 a")
else:
print ("6 - b 小於 a")複製代碼
以上實例輸出結果:
1 - a 不等於 b
2 - a 不等於 b
3 - a 大於等於 b
4 - a 大於 b
5 - a 小於等於 b
6 - b 大於等於 a複製代碼
如下假設變量a爲10,變量b爲20:
運算符 | 描述 | 實例 |
---|---|---|
= | 簡單的賦值運算符 | c = a + b 將 a + b 的運算結果賦值爲 c |
+= | 加法賦值運算符 | c += a 等效於 c = c + a |
-= | 減法賦值運算符 | c -= a 等效於 c = c - a |
*= | 乘法賦值運算符 | c *= a 等效於 c = c * a |
/= | 除法賦值運算符 | c /= a 等效於 c = c / a |
%= | 取模賦值運算符 | c %= a 等效於 c = c % a |
**= | 冪賦值運算符 | c **= a 等效於 c = c ** a |
//= | 取整除賦值運算符 | c //= a 等效於 c = c // a |
:= | 海象運算符,可在表達式內部爲變量賦值。Python3.8 版本新增運算符。 | 在這個示例中,賦值表達式能夠避免調用 len() 兩次: if (n := len(a)) > 10:
print(f"List is too long ({n} elements, expected <= 10)")複製代碼 |
如下實例演示了Python全部賦值運算符的操做:
實例(Python 3.0+)
#!/usr/bin/python3
a = 21
b = 10
c = 0
c = a + b
print ("1 - c 的值爲:", c)
c += a
print ("2 - c 的值爲:", c)
c *= a
print ("3 - c 的值爲:", c)
c /= a
print ("4 - c 的值爲:", c)
c = 2
c %= a
print ("5 - c 的值爲:", c)
c **= a
print ("6 - c 的值爲:", c)
c //= a
print ("7 - c 的值爲:", c)複製代碼
以上實例輸出結果:
1 - c 的值爲: 31
2 - c 的值爲: 52
3 - c 的值爲: 1092
4 - c 的值爲: 52.0
5 - c 的值爲: 2
6 - c 的值爲: 2097152
7 - c 的值爲: 99864複製代碼
按位運算符是把數字看做二進制來進行計算的。Python中的按位運算法則以下:
下表中變量 a 爲 60,b 爲 13二進制格式以下:
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011複製代碼
運算符 | 描述 | 實例 |
---|---|---|
& | 按位與運算符:參與運算的兩個值,若是兩個相應位都爲1,則該位的結果爲1,不然爲0 | (a & b) 輸出結果 12 ,二進制解釋: 0000 1100 |
| | 按位或運算符:只要對應的二個二進位有一個爲1時,結果位就爲1。 | (a | b) 輸出結果 61 ,二進制解釋: 0011 1101 |
^ | 按位異或運算符:當兩對應的二進位相異時,結果爲1 | (a ^ b) 輸出結果 49 ,二進制解釋: 0011 0001 |
~ | 按位取反運算符:對數據的每一個二進制位取反,即把1變爲0,把0變爲1。~x 相似於 -x-1 | (~a ) 輸出結果 -61 ,二進制解釋: 1100 0011, 在一個有符號二進制數的補碼形式。 |
<< | 左移動運算符:運算數的各二進位所有左移若干位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0。 | a << 2 輸出結果 240 ,二進制解釋: 1111 0000 |
>> | 右移動運算符:把">>"左邊的運算數的各二進位所有右移若干位,">>"右邊的數指定移動的位數 | a >> 2 輸出結果 15 ,二進制解釋: 0000 1111 |
如下實例演示了Python全部位運算符的操做:
實例(Python 3.0+)
#!/usr/bin/python3
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0
c = a & b; # 12 = 0000 1100
print ("1 - c 的值爲:", c)
c = a | b; # 61 = 0011 1101
print ("2 - c 的值爲:", c)
c = a ^ b; # 49 = 0011 0001
print ("3 - c 的值爲:", c)
c = ~a; # -61 = 1100 0011
print ("4 - c 的值爲:", c)
c = a << 2; # 240 = 1111 0000
print ("5 - c 的值爲:", c)
c = a >> 2; # 15 = 0000 1111
print ("6 - c 的值爲:", c)複製代碼
以上實例輸出結果:
1 - c 的值爲: 12
2 - c 的值爲: 61
3 - c 的值爲: 49
4 - c 的值爲: -61
5 - c 的值爲: 240
6 - c 的值爲: 15複製代碼
6. Python邏輯運算符
Python語言支持邏輯運算符,如下假設變量 a 爲 10, b爲 20:
運算符 | 邏輯表達式 | 描述 | 實例 |
---|---|---|---|
and | x and y | 布爾"與" - 若是 x 爲 False,x and y 返回 False,不然它返回 y 的計算值。 | (a and b) 返回 20。 |
or | x or y | 布爾"或" - 若是 x 是 True,它返回 x 的值,不然它返回 y 的計算值。 | (a or b) 返回 10。 |
not | not x | 布爾"非" - 若是 x 爲 True,返回 False 。若是 x 爲 False,它返回 True。 | not(a and b) 返回 False |
以上實例輸出結果:
實例(Python 3.0+)
#!/usr/bin/python3
a = 10
b = 20
if ( a and b ):
print ("1 - 變量 a 和 b 都爲 true")
else:
print ("1 - 變量 a 和 b 有一個不爲 true")
if ( a or b ):
print ("2 - 變量 a 和 b 都爲 true,或其中一個變量爲 true")
else:
print ("2 - 變量 a 和 b 都不爲 true")
# 修改變量 a 的值
a = 0
if ( a and b ):
print ("3 - 變量 a 和 b 都爲 true")
else:
print ("3 - 變量 a 和 b 有一個不爲 true")
if ( a or b ):
print ("4 - 變量 a 和 b 都爲 true,或其中一個變量爲 true")
else:
print ("4 - 變量 a 和 b 都不爲 true")
if not( a and b ):
print ("5 - 變量 a 和 b 都爲 false,或其中一個變量爲 false")
else:
print ("5 - 變量 a 和 b 都爲 true")複製代碼
以上實例輸出結果:
1 - 變量 a 和 b 都爲 true
2 - 變量 a 和 b 都爲 true,或其中一個變量爲 true
3 - 變量 a 和 b 有一個不爲 true
4 - 變量 a 和 b 都爲 true,或其中一個變量爲 true
5 - 變量 a 和 b 都爲 false,或其中一個變量爲 false複製代碼
7. Python成員運算符
除了以上的一些運算符以外,Python還支持成員運算符,測試實例中包含了一系列的成員,包括字符串,列表或元組。
運算符 | 描述 | 實例 |
---|---|---|
in | 若是在指定的序列中找到值返回 True,不然返回 False。 | x 在 y 序列中 , 若是 x 在 y 序列中返回 True。 |
not in | 若是在指定的序列中沒有找到值返回 True,不然返回 False。 | x 不在 y 序列中 , 若是 x 不在 y 序列中返回 True。 |
如下實例演示了Python全部成員運算符的操做:
實例(Python 3.0+)
#!/usr/bin/python3
a = 10
b = 20
list = [1, 2, 3, 4, 5 ];
if ( a in list ):
print ("1 - 變量 a 在給定的列表中 list 中")
else:
print ("1 - 變量 a 不在給定的列表中 list 中")
if ( b not in list ):
print ("2 - 變量 b 不在給定的列表中 list 中")
else:
print ("2 - 變量 b 在給定的列表中 list 中")
# 修改變量 a 的值
a = 2
if ( a in list ):
print ("3 - 變量 a 在給定的列表中 list 中")
else:
print ("3 - 變量 a 不在給定的列表中 list 中")複製代碼
以上實例輸出結果:
1 - 變量 a 不在給定的列表中 list 中
2 - 變量 b 不在給定的列表中 list 中
3 - 變量 a 在給定的列表中 list 中複製代碼
身份運算符用於比較兩個對象的存儲單元
運算符 | 描述 | 實例 |
---|---|---|
is | is 是判斷兩個標識符是否是引用自一個對象 | x is y, 相似 id(x) == id(y) , 若是引用的是同一個對象則返回 True,不然返回 False |
is not | is not 是判斷兩個標識符是否是引用自不一樣對象 | x is not y , 相似 id(a) != id(b)。若是引用的不是同一個對象則返回結果 True,不然返回 False。 |
注: id() 函數用於獲取對象內存地址。
如下實例演示了Python全部身份運算符的操做:
實例(Python 3.0+)
a = 20
b = 20
if ( a is b ):
print ("1 - a 和 b 有相同的標識")
else:
print ("1 - a 和 b 沒有相同的標識")
if ( id(a) == id(b) ):
print ("2 - a 和 b 有相同的標識")
else:
print ("2 - a 和 b 沒有相同的標識")
# 修改變量 b 的值
b = 30
if ( a is b ):
print ("3 - a 和 b 有相同的標識")
else:
print ("3 - a 和 b 沒有相同的標識")
if ( a is not b ):
print ("4 - a 和 b 沒有相同的標識")
else:
print ("4 - a 和 b 有相同的標識")複製代碼
以上實例輸出結果:
1 - a 和 b 有相同的標識
2 - a 和 b 有相同的標識
3 - a 和 b 沒有相同的標識
4 - a 和 b 沒有相同的標識複製代碼
is 與 == 區別:
is 用於判斷兩個變量引用對象是否爲同一個, == 用於判斷引用變量的值是否相等。
>>>a = [1, 2, 3] >>> b = a >>> b is a True >>> b == a True >>> b = a[:] >>> b is a False >>> b == a True
如下表格列出了從最高到最低優先級的全部運算符:
運算符 | 描述 |
---|---|
** | 指數 (最高優先級) |
~ + - | 按位翻轉, 一元加號和減號 (最後兩個的方法名爲 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法減法 |
>> << | 右移,左移運算符 |
& | 位 'AND' |
^ | | 位運算符 |
<= < > >= | 比較運算符 |
== != | 等於運算符 |
= %= /= //= -= += *= **= | 賦值運算符 |
is is not | 身份運算符 |
in not in | 成員運算符 |
not and or | 邏輯運算符 |
如下實例演示了Python全部運算符優先級的操做:
實例(Python 3.0+)
#!/usr/bin/python3
a = 20
b = 10
c = 15
d = 5
e = 0
e = (a + b) * c / d #( 30 * 15 ) / 5
print ("(a + b) * c / d 運算結果爲:", e)
e = ((a + b) * c) / d # (30 * 15 ) / 5
print ("((a + b) * c) / d 運算結果爲:", e)
e = (a + b) * (c / d); # (30) * (15/5)
print ("(a + b) * (c / d) 運算結果爲:", e)
e = a + (b * c) / d; # 20 + (150/5)
print ("a + (b * c) / d 運算結果爲:", e)複製代碼
以上實例輸出結果:
(a + b) * c / d 運算結果爲: 90.0
((a + b) * c) / d 運算結果爲: 90.0
(a + b) * (c / d) 運算結果爲: 90.0
a + (b * c) / d 運算結果爲: 50.0複製代碼
注意:Pyhton3 已不支持 <> 運算符,可使用 != 代替,若是你必定要使用這種比較運算符,可使用如下的方式:
>>> from __future__ import barry_as_FLUFL
>>> 1 <> 2
True複製代碼
Python 數字數據類型用於存儲數值。
數據類型是不容許改變的,這就意味着若是改變數字數據類型的值,將從新分配內存空間。
如下實例在變量賦值時 Number 對象將被建立:
var1 = 1
var2 = 10複製代碼
您也可使用del語句刪除一些數字對象的引用。
del語句的語法是:
del var1[,var2[,var3[....,varN]]]複製代碼
您能夠經過使用del語句刪除單個或多個對象的引用,例如:
del var
del var_a, var_b複製代碼
Python 支持三種不一樣的數值類型:
咱們可使用十六進制和八進制來表明整數:
>>> number = 0xA0F # 十六進制
>>> number
2575
>>> number=0o37 # 八進制
>>> number
31複製代碼
int | float | complex |
---|---|---|
10 | 0.0 | 3.14j |
100 | 15.20 | 45.j |
-786 | -21.9 | 9.322e-36j |
080 | 32.3e+18 | .876j |
-0490 | -90. | -.6545+0J |
-0x260 | -32.54e100 | 3e+26J |
0x69 | 70.2E-12 | 4.53e-7j |
有時候,咱們須要對數據內置的類型進行轉換,數據類型的轉換,你只須要將數據類型做爲函數名便可。
int(x) 將x轉換爲一個整數。
float(x) 將x轉換到一個浮點數。
complex(x) 將x轉換到一個複數,實數部分爲 x,虛數部分爲 0。
complex(x, y) 將 x 和 y 轉換到一個複數,實數部分爲 x,虛數部分爲 y。x 和 y 是數字表達式。
如下實例將浮點數變量 a 轉換爲整數:
>>> a = 1.0
>>> int(a)
1複製代碼
Python 解釋器能夠做爲一個簡單的計算器,您能夠在解釋器裏輸入一個表達式,它將輸出表達式的值。
表達式的語法很直白: +, -, * 和 /, 和其它語言(如Pascal或C)裏同樣。例如:
>>> 2 + 2
4
>>> 50 - 5*6
20
>>> (50 - 5*6) / 4
5.0
>>> 8 / 5 # 老是返回一個浮點數
1.6複製代碼
注意:在不一樣的機器上浮點運算的結果可能會不同。
在整數除法中,除法 / 老是返回一個浮點數,若是隻想獲得整數的結果,丟棄可能的分數部分,可使用運算符 // :
>>> 17 / 3 # 整數除法返回浮點型
5.666666666666667
>>>
>>> 17 // 3 # 整數除法返回向下取整後的結果
5
>>> 17 % 3 # %操做符返回除法的餘數
2
>>> 5 * 3 + 2
17複製代碼
注意:// 獲得的並不必定是整數類型的數,它與分母分子的數據類型有關係。
>>> 7//2
3
>>> 7.0//2
3.0
>>> 7//2.0
3.0
>>> 複製代碼
等號 = 用於給變量賦值。賦值以後,除了下一個提示符,解釋器不會顯示任何結果。
>>> width = 20
>>> height = 5*9
>>> width * height
900複製代碼
Python 可使用 ** 操做來進行冪運算:
>>> 5 ** 2 # 5 的平方
25
>>> 2 ** 7 # 2的7次方
128複製代碼
變量在使用前必須先"定義"(即賦予變量一個值),不然會出現錯誤:
>>> n # 嘗試訪問一個未定義的變量
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'n' is not defined複製代碼
不一樣類型的數混合運算時會將整數轉換爲浮點數:
>>> 3 * 3.75 / 1.5
7.5
>>> 7.0 / 2
3.5複製代碼
在交互模式中,最後被輸出的表達式結果被賦值給變量 _ 。例如:
>>> tax = 12.5 / 100
>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625
>>> round(_, 2)
113.06複製代碼
此處, _ 變量應被用戶視爲只讀變量。
函數 | 返回值 ( 描述 ) |
---|---|
abs(x) | 返回數字的絕對值,如abs(-10) 返回 10 |
ceil(x) | 返回數字的上入整數,如math.ceil(4.1) 返回 5 |
cmp(x, y) |
若是 x < y 返回 -1, 若是 x == y 返回 0, 若是 x > y 返回 1。 Python 3 已廢棄,使用 (x>y)-(x<y) 替換。 |
exp(x) | 返回e的x次冪(ex),如math.exp(1) 返回2.718281828459045 |
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的平方根。 |
隨機數能夠用於數學,遊戲,安全等領域中,還常常被嵌入到算法中,用以提升算法效率,並提升程序的安全性。
Python包含如下經常使用隨機數函數:
函數 | 描述 |
---|---|
choice(seq) | 從序列的元素中隨機挑選一個元素,好比random.choice(range(10)),從0到9中隨機挑選一個整數。 |
randrange ([start,] stop [,step]) | 從指定範圍內,按指定基數遞增的集合中獲取一個隨機數,基數默認值爲 1 |
random() | 隨機生成下一個實數,它在[0,1)範圍內。 |
seed([x]) | 改變隨機數生成器的種子seed。若是你不瞭解其原理,你沒必要特別去設定seed,Python會幫你選擇seed。 |
shuffle(lst) | 將序列的全部元素隨機排序 |
uniform(x, y) | 隨機生成下一個實數,它在[x,y]範圍內。 |
Python包括如下三角函數:
函數 | 描述 |
---|---|
acos(x) | 返回x的反餘弦弧度值。 |
asin(x) | 返回x的反正弦弧度值。 |
atan(x) | 返回x的反正切弧度值。 |
atan2(y, x) | 返回給定的 X 及 Y 座標值的反正切值。 |
cos(x) | 返回x的弧度的餘弦值。 |
hypot(x, y) | 返回歐幾里德範數 sqrt(x*x + y*y)。 |
sin(x) | 返回的x弧度的正弦值。 |
tan(x) | 返回x弧度的正切值。 |
degrees(x) | 將弧度轉換爲角度,如degrees(math.pi/2) , 返回90.0 |
radians(x) | 將角度轉換爲弧度 |
常量 | 描述 |
---|---|
pi | 數學常量 pi(圓周率,通常以π來表示) |
e | 數學常量 e,e即天然常數(天然常數)。 |
字符串是 Python 中最經常使用的數據類型。咱們可使用引號( ' 或 " )來建立字符串。
建立字符串很簡單,只要爲變量分配一個值便可。例如:
Python 不支持單字符類型,單字符在 Python 中也是做爲一個字符串使用。
Python 訪問子字符串,可使用方括號來截取字符串,以下實例:
實例(Python 3.0+)
#!/usr/bin/python3
var1 = 'Hello World!'
var2 = "Runoob"
print ("var1[0]: ", var1[0])
print ("var2[1:5]: ", var2[1:5])複製代碼
以上實例執行結果:
var1[0]: H
var2[1:5]: unoo複製代碼
你能夠截取字符串的一部分並與其餘字段拼接,以下實例:
實例(Python 3.0+)
#!/usr/bin/python3
var1 = 'Hello World!'
print ("已更新字符串 : ", var1[:6] + 'Runoob!')複製代碼
以上實例執行結果
已更新字符串 : Hello Runoob!複製代碼
在須要在字符中使用特殊字符時,python用反斜槓(\)轉義字符。以下表:
轉義字符 | 描述 |
---|---|
\(在行尾時) | 續行符 |
\\ | 反斜槓符號 |
\' | 單引號 |
\" | 雙引號 |
\a | 響鈴 |
\b | 退格(Backspace) |
\000 | 空 |
\n | 換行 |
\v | 縱向製表符 |
\t | 橫向製表符 |
\r | 回車 |
\f | 換頁 |
\oyy | 八進制數,yy 表明的字符,例如:\o12 表明換行,其中 o 是字母,不是數字 0。 |
\xyy | 十六進制數,yy表明的字符,例如:\x0a表明換行 |
\other | 其它的字符以普通格式輸出 |
下表實例變量a值爲字符串 "Hello",b變量值爲 "Python":
操做符 | 描述 | 實例 |
---|---|---|
+ | 字符串鏈接 | a + b 輸出結果: HelloPython |
* | 重複輸出字符串 | a*2 輸出結果:HelloHello |
[] | 經過索引獲取字符串中字符 | a[1] 輸出結果 e |
[ : ] | 截取字符串中的一部分,遵循左閉右開原則,str[0,2] 是不包含第 3 個字符的。 | a[1:4] 輸出結果 ell |
in | 成員運算符 - 若是字符串中包含給定的字符返回 True | 'H' in a 輸出結果 True |
not in | 成員運算符 - 若是字符串中不包含給定的字符返回 True | 'M' not in a 輸出結果 True |
r/R | 原始字符串 - 原始字符串:全部的字符串都是直接按照字面的意思來使用,沒有轉義特殊或不能打印的字符。 原始字符串除在字符串的第一個引號前加上字母 r(能夠大小寫)之外,與普通字符串有着幾乎徹底相同的語法。 | print( r'\n' )
print( R'\n' )複製代碼 |
% | 格式字符串 | 請看下一節內容。 |
實例(Python 3.0+)
#!/usr/bin/python3
a = "Hello"
b = "Python"
print("a + b 輸出結果:", a + b)
print("a * 2 輸出結果:", a * 2)
print("a[1] 輸出結果:", a[1])
print("a[1:4] 輸出結果:", a[1:4])
if( "H" in a) :
print("H 在變量 a 中")
else :
print("H 不在變量 a 中")
if( "M" not in a) :
print("M 不在變量 a 中")
else :
print("M 在變量 a 中")
print (r'\n')
print (R'\n')複製代碼
以上實例輸出結果爲:
a + b 輸出結果: HelloPython
a * 2 輸出結果: HelloHello
a[1] 輸出結果: e
a[1:4] 輸出結果: ell
H 在變量 a 中
M 不在變量 a 中
\n
\n複製代碼
Python 支持格式化字符串的輸出 。儘管這樣可能會用到很是複雜的表達式,但最基本的用法是將一個值插入到一個有字符串格式符 %s 的字符串中。
在 Python 中,字符串格式化使用與 C 中 sprintf 函數同樣的語法。
實例(Python 3.0+)
#!/usr/bin/python3
print ("我叫 %s 今年 %d 歲!" % ('小明', 10))複製代碼
以上實例輸出結果:
我叫 小明 今年 10 歲!複製代碼
python字符串格式化符號:
符 號 | 描述 |
---|---|
%c
|
格式化字符及其ASCII碼
|
%s
|
格式化字符串
|
%d
|
格式化整數
|
%u
|
格式化無符號整型
|
%o
|
格式化無符號八進制數
|
%x
|
格式化無符號十六進制數
|
%X
|
格式化無符號十六進制數(大寫)
|
%f
|
格式化浮點數字,可指定小數點後的精度
|
%e
|
用科學計數法格式化浮點數
|
%E
|
做用同%e,用科學計數法格式化浮點數
|
%g
|
%f和%e的簡寫
|
%G
|
%f 和 %E 的簡寫
|
%p
|
用十六進制數格式化變量的地址
|
格式化操做符輔助指令:
符號 | 功能 |
---|---|
* | 定義寬度或者小數點精度 |
- | 用作左對齊 |
+ | 在正數前面顯示加號( + ) |
<sp> | 在正數前面顯示空格 |
# | 在八進制數前面顯示零('0'),在十六進制前面顯示'0x'或者'0X'(取決於用的是'x'仍是'X') |
0 | 顯示的數字前面填充'0'而不是默認的空格 |
% | '%%'輸出一個單一的'%' |
(var) | 映射變量(字典參數) |
m.n. | m 是顯示的最小總寬度,n 是小數點後的位數(若是可用的話) |
Python2.6 開始,新增了一種格式化字符串的函數 str.format(),它加強了字符串格式化的功能。
python三引號容許一個字符串跨多行,字符串中能夠包含換行符、製表符以及其餘特殊字符。實例以下
實例(Python 3.0+)
#!/usr/bin/python3
para_str = """這是一個多行字符串的實例 多行字符串可使用製表符 TAB ( \t )。 也可使用換行符 [ \n ]。 """
print (para_str)複製代碼
以上實例執行結果爲:
這是一個多行字符串的實例
多行字符串可使用製表符
TAB ( )。
也可使用換行符 [
]。複製代碼
三引號讓程序員從引號和特殊字符串的泥潭裏面解脫出來,自始至終保持一小塊字符串的格式是所謂的WYSIWYG(所見即所得)格式的。
一個典型的用例是,當你須要一塊HTML或者SQL時,這時用字符串組合,特殊字符串轉義將會很是的繁瑣。
errHTML = ''' <HTML><HEAD><TITLE> Friends CGI Demo</TITLE></HEAD> <BODY><H3>ERROR</H3> <B>%s</B><P> <FORM><INPUT TYPE=button VALUE=Back ONCLICK="window.history.back()"></FORM> </BODY></HTML> '''
cursor.execute(''' CREATE TABLE users ( login VARCHAR(8), uid INTEGER, prid INTEGER) ''')複製代碼
f-string 是 python3.6 以後版本添加的,稱之爲字面量格式化字符串,是新的格式化字符串的語法。
以前咱們習慣用百分號 (%):
實例
>>> name = 'Runoob'
>>> 'Hello %s' % name'Hello Runoob'複製代碼
f-string 格式話字符串以 f 開頭,後面跟着字符串,字符串中的表達式用大括號 {} 包起來,它會將變量或表達式計算後的值替換進去,實例以下:
實例
>>> name = 'Runoob'
>>> f'Hello {name}' # 替換變量
>>> f'{1+2}' # 使用表達式'3'
>>> w = {'name': 'Runoob', 'url': 'www.runoob.com'}
>>> f'{w["name"]}: {w["url"]}''Runoob: www.runoob.com'複製代碼
用了這種方式明顯更簡單了,不用再去判斷使用 %s,仍是 %d。
在 Python 3.8 的版本中可使用 = 符號來拼接運算表達式與結果:
實例
>>> x = 1
>>> print(f'{x+1}') # Python 3.62
>>> x = 1
>>> print(f'{x+1=}') # Python 3.8'x+1=2'複製代碼
在Python2中,普通字符串是以8位ASCII碼進行存儲的,而Unicode字符串則存儲爲16位unicode字符串,這樣可以表示更多的字符集。使用的語法是在字符串前面加上前綴 u。
在Python3中,全部的字符串都是Unicode字符串。
Python 的字符串經常使用內建函數以下:
序號 | 方法及描述 |
---|---|
1 | capitalize() |
2 | 返回一個指定的寬度 width 居中的字符串,fillchar 爲填充的字符,默認爲空格。 |
3 | count(str, beg= 0,end=len(string)) 返回 str 在 string 裏面出現的次數,若是 beg 或者 end 指定則返回指定範圍內 str 出現的次數 |
4 | bytes.decode(encoding="utf-8", errors="strict") Python3 中沒有 decode 方法,但咱們可使用 bytes 對象的 decode() 方法來解碼給定的 bytes 對象,這個 bytes 對象能夠由 str.encode() 來編碼返回。 |
5 | encode(encoding='UTF-8',errors='strict') 以 encoding 指定的編碼格式編碼字符串,若是出錯默認報一個ValueError 的異常,除非 errors 指定的是'ignore'或者'replace' |
6 | endswith(suffix, beg=0, end=len(string)) |
7 | 把字符串 string 中的 tab 符號轉爲空格,tab 符號默認的空格數是 8 。 |
8 | find(str, beg=0, end=len(string)) 檢測 str 是否包含在字符串中,若是指定範圍 beg 和 end ,則檢查是否包含在指定範圍內,若是包含返回開始的索引值,不然返回-1 |
9 | index(str, beg=0, end=len(string)) 跟find()方法同樣,只不過若是str不在字符串中會報一個異常. |
10 | 若是字符串至少有一個字符而且全部字符都是字母或數字則返 回 True,不然返回 False |
11 | 若是字符串至少有一個字符而且全部字符都是字母則返回 True, 不然返回 False |
12 | 若是字符串只包含數字則返回 True 不然返回 False.. |
13 | 若是字符串中包含至少一個區分大小寫的字符,而且全部這些(區分大小寫的)字符都是小寫,則返回 True,不然返回 False |
14 | 若是字符串中只包含數字字符,則返回 True,不然返回 False |
15 | 若是字符串中只包含空白,則返回 True,不然返回 False. |
16 | 若是字符串是標題化的(見 title())則返回 True,不然返回 False |
17 | 若是字符串中包含至少一個區分大小寫的字符,而且全部這些(區分大小寫的)字符都是大寫,則返回 True,不然返回 False |
18 | 以指定字符串做爲分隔符,將 seq 中全部的元素(的字符串表示)合併爲一個新的字符串 |
19 | 返回字符串長度 |
20 | 返回一個原字符串左對齊,並使用 fillchar 填充至長度 width 的新字符串,fillchar 默認爲空格。 |
21 | 轉換字符串中全部大寫字符爲小寫. |
22 | 截掉字符串左邊的空格或指定字符。 |
23 | 建立字符映射的轉換表,對於接受兩個參數的最簡單的調用方式,第一個參數是字符串,表示須要轉換的字符,第二個參數也是字符串表示轉換的目標。 |
24 | 返回字符串 str 中最大的字母。 |
25 | 返回字符串 str 中最小的字母。 |
26 | 把 將字符串中的 str1 替換成 str2,若是 max 指定,則替換不超過 max 次。 |
27 | rfind(str, beg=0,end=len(string)) 相似於 find()函數,不過是從右邊開始查找. |
28 | rindex( str, beg=0, end=len(string)) 相似於 index(),不過是從右邊開始. |
29 | 返回一個原字符串右對齊,並使用fillchar(默認空格)填充至長度 width 的新字符串 |
30 | 刪除字符串字符串末尾的空格. |
31 | split(str="", num=string.count(str)) num=string.count(str)) 以 str 爲分隔符截取字符串,若是 num 有指定值,則僅截取 num+1 個子字符串 |
32 | 按照行('\r', '\r\n', \n')分隔,返回一個包含各行做爲元素的列表,若是參數 keepends 爲 False,不包含換行符,若是爲 True,則保留換行符。 |
33 | startswith(substr, beg=0,end=len(string)) 檢查字符串是不是以指定子字符串 substr 開頭,是則返回 True,不然返回 False。若是beg 和 end 指定值,則在指定範圍內檢查。 |
34 | 在字符串上執行 lstrip()和 rstrip() |
35 | 將字符串中大寫轉換爲小寫,小寫轉換爲大寫 |
36 | 返回"標題化"的字符串,就是說全部單詞都是以大寫開始,其他字母均爲小寫(見 istitle()) |
37 | translate(table, deletechars="") 根據 str 給出的表(包含 256 個字符)轉換 string 的字符, 要過濾掉的字符放到 deletechars 參數中 |
38 | 轉換字符串中的小寫字母爲大寫 |
39 | 返回長度爲 width 的字符串,原字符串右對齊,前面填充0 |
40 | 檢查字符串是否只包含十進制字符,若是是返回 true,不然返回 false。 |
序列是Python中最基本的數據結構。序列中的每一個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。
Python有6個序列的內置類型,但最多見的是列表和元組。
序列均可以進行的操做包括索引,切片,加,乘,檢查成員。
此外,Python已經內置肯定序列的長度以及肯定最大和最小的元素的方法。
列表是最經常使用的Python數據類型,它能夠做爲一個方括號內的逗號分隔值出現。
列表的數據項不須要具備相同的類型
建立一個列表,只要把逗號分隔的不一樣的數據項使用方括號括起來便可。以下所示:
與字符串的索引同樣,列表索引從0開始。列表能夠進行截取、組合等。
使用下標索引來訪問列表中的值,一樣你也可使用方括號的形式截取字符,以下所示:
實例(Python 3.0+)
#!/usr/bin/python3
list1 = ['Google', 'Runoob', 1997, 2000];
list2 = [1, 2, 3, 4, 5, 6, 7 ];
print ("list1[0]: ", list1[0])
print ("list2[1:5]: ", list2[1:5])複製代碼
以上實例輸出結果:
list1[0]: Google
list2[1:5]: [2, 3, 4, 5]複製代碼
你能夠對列表的數據項進行修改或更新,你也可使用append()方法來添加列表項,以下所示:
實例(Python 3.0+)
#!/usr/bin/python3
list = ['Google', 'Runoob', 1997, 2000]
print ("第三個元素爲 : ", list[2])
list[2] = 2001
print ("更新後的第三個元素爲 : ", list[2])複製代碼
注意:咱們會在接下來的章節討論append()方法的使用
以上實例輸出結果:
第三個元素爲 : 1997
更新後的第三個元素爲 : 2001複製代碼
可使用 del 語句來刪除列表的的元素,以下實例:
實例(Python 3.0+)
#!/usr/bin/python3
list = ['Google', 'Runoob', 1997, 2000]
print ("原始列表 : ", list)
del list[2]
print ("刪除第三個元素 : ", list)複製代碼
以上實例輸出結果:
原始列表 : ['Google', 'Runoob', 1997, 2000]
刪除第三個元素 : ['Google', 'Runoob', 2000]複製代碼
注意:咱們會在接下來的章節討論 remove() 方法的使用
列表對 + 和 * 的操做符與字符串類似。+ 號用於組合列表,* 號用於重複列表。
以下所示:
Python 表達式 | 結果 | 描述 |
---|---|---|
len([1, 2, 3]) | 3 | 長度 |
[1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 組合 |
['Hi!'] * 4 | ['Hi!', 'Hi!', 'Hi!', 'Hi!'] | 重複 |
3 in [1, 2, 3] | True | 元素是否存在於列表中 |
for x in [1, 2, 3]: print(x, end=" ") | 1 2 3 | 迭代 |
Python的列表截取與字符串操做類型,以下所示:
操做:
Python 表達式 | 結果 | 描述 |
---|---|---|
L[2] | 'Taobao' | 讀取第三個元素 |
L[-2] | 'Runoob' | 從右側開始讀取倒數第二個元素: count from the right |
L[1:] | ['Runoob', 'Taobao'] | 輸出從第二個元素開始後的全部元素 |
>>>L=['Google', 'Runoob', 'Taobao']
>>> L[2]
'Taobao'
>>> L[-2]
'Runoob'
>>> L[1:]
['Runoob', 'Taobao']
>>>複製代碼
列表還支持拼接操做:
>>>squares = [1, 4, 9, 16, 25]
>>> squares += [36, 49, 64, 81, 100]
>>> squares
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>>複製代碼
使用嵌套列表即在列表裏建立其它列表,例如:
>>>a = ['a', 'b', 'c']
>>> n = [1, 2, 3]
>>> x = [a, n]
>>> x
[['a', 'b', 'c'], [1, 2, 3]]
>>> x[0]
['a', 'b', 'c']
>>> x[0][1]
'b'複製代碼
Python包含如下函數:
序號 | 函數 |
---|---|
1 | len(list) 列表元素個數 |
2 | max(list) 返回列表元素最大值 |
3 | min(list) 返回列表元素最小值 |
4 | list(seq) 將元組轉換爲列表 |
Python包含如下方法:
序號 | 方法 |
---|---|
1 | list.append(obj) 在列表末尾添加新的對象 |
2 | list.count(obj) 統計某個元素在列表中出現的次數 |
3 | list.extend(seq) 在列表末尾一次性追加另外一個序列中的多個值(用新列表擴展原來的列表) |
4 | list.index(obj) 從列表中找出某個值第一個匹配項的索引位置 |
5 | list.insert(index, obj) 將對象插入列表 |
6 | list.pop([index=-1]) 移除列表中的一個元素(默認最後一個元素),而且返回該元素的值 |
7 | list.remove(obj) 移除列表中某個值的第一個匹配項 |
8 | list.reverse() 反向列表中元素 |
9 | list.sort( key=None, reverse=False) 對原列表進行排序 |
10 | list.clear() 清空列表 |
11 | list.copy() 複製列表 |
Python 的元組與列表相似,不一樣之處在於元組的元素不能修改。
元組使用小括號,列表使用方括號。
元組建立很簡單,只須要在括號中添加元素,並使用逗號隔開便可。
實例(Python 3.0+)
>>>tup1 = ('Google', 'Runoob', 1997, 2000);
>>> tup2 = (1, 2, 3, 4, 5 );
>>> tup3 = "a", "b", "c", "d"; # 不須要括號也能夠
>>> type(tup3)
<class 'tuple'>複製代碼
建立空元組
tup1 = ();複製代碼
元組中只包含一個元素時,須要在元素後面添加逗號,不然括號會被看成運算符使用:
實例(Python 3.0+)
>>>tup1 = (50)
>>> type(tup1) # 不加逗號,類型爲整型
<class 'int'>
>>> tup1 = (50,)
>>> type(tup1) # 加上逗號,類型爲元組
<class 'tuple'>複製代碼
元組與字符串相似,下標索引從0開始,能夠進行截取,組合等。
元組可使用下標索引來訪問元組中的值,以下實例:
實例(Python 3.0+)
#!/usr/bin/python3
tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
print ("tup1[0]: ", tup1[0])
print ("tup2[1:5]: ", tup2[1:5])複製代碼
以上實例輸出結果:
tup1[0]: Google
tup2[1:5]: (2, 3, 4, 5)複製代碼
元組中的元素值是不容許修改的,但咱們能夠對元組進行鏈接組合,以下實例:
實例(Python 3.0+)
#!/usr/bin/python3
tup1 = (12, 34.56);
tup2 = ('abc', 'xyz')
# 如下修改元組元素操做是非法的。
# tup1[0] = 100
# 建立一個新的元組
tup3 = tup1 + tup2;
print (tup3)複製代碼
以上實例輸出結果:
(12, 34.56, 'abc', 'xyz')複製代碼
元組中的元素值是不容許刪除的,但咱們可使用del語句來刪除整個元組,以下實例:
實例(Python 3.0+)
#!/usr/bin/python3
tup = ('Google', 'Runoob', 1997, 2000)
print (tup)
del tup;
print ("刪除後的元組 tup : ")
print (tup)複製代碼
以上實例元組被刪除後,輸出變量會有異常信息,輸出以下所示:
刪除後的元組 tup :
Traceback (most recent call last):
File "test.py", line 8, in <module>
print (tup)
NameError: name 'tup' is not defined複製代碼
與字符串同樣,元組之間可使用 + 號和 * 號進行運算。這就意味着他們能夠組合和複製,運算後會生成一個新的元組。
Python 表達式 | 結果 | 描述 |
---|---|---|
len((1, 2, 3)) | 3 | 計算元素個數 |
(1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | 鏈接 |
('Hi!',) * 4 | ('Hi!', 'Hi!', 'Hi!', 'Hi!') | 複製 |
3 in (1, 2, 3) | True | 元素是否存在 |
for x in (1, 2, 3): print (x,) | 1 2 3 | 迭代 |
由於元組也是一個序列,因此咱們能夠訪問元組中的指定位置的元素,也能夠截取索引中的一段元素,以下所示:
元組:
L = ('Google', 'Taobao', 'Runoob')複製代碼
Python 表達式 | 結果 | 描述 |
---|---|---|
L[2] | 'Runoob' | 讀取第三個元素 |
L[-2] | 'Taobao' | 反向讀取;讀取倒數第二個元素 |
L[1:] | ('Taobao', 'Runoob') | 截取元素,從第二個開始後的全部元素。 |
運行實例以下:
>>> L = ('Google', 'Taobao', 'Runoob')
>>> L[2]
'Runoob'
>>> L[-2]
'Taobao'
>>> L[1:]
('Taobao', 'Runoob')複製代碼
Python元組包含了如下內置函數
序號 | 方法及描述 | 實例 |
---|---|---|
1 | len(tuple) 計算元組元素個數。 |
>>> tuple1 = ('Google', 'Runoob', 'Taobao')
>>> len(tuple1)
3
>>> 複製代碼 |
2 | max(tuple) 返回元組中元素最大值。 |
>>> tuple2 = ('5', '4', '8')
>>> max(tuple2)
'8'
>>> 複製代碼 |
3 | min(tuple) 返回元組中元素最小值。 |
>>> tuple2 = ('5', '4', '8')
>>> min(tuple2)
'4'
>>> 複製代碼 |
4 | tuple(seq) 將列表轉換爲元組。 |
>>> list1= ['Google', 'Taobao', 'Runoob', 'Baidu']
>>> tuple1=tuple(list1)
>>> tuple1
('Google', 'Taobao', 'Runoob', 'Baidu')複製代碼 |
字典是另外一種可變容器模型,且可存儲任意類型對象。
字典的每一個鍵值(key=>value)對用冒號(:)分割,每一個對之間用逗號(,)分割,整個字典包括在花括號({})中 ,格式以下所示:
d = {key1 : value1, key2 : value2 }複製代碼
鍵必須是惟一的,但值則沒必要。
值能夠取任何數據類型,但鍵必須是不可變的,如字符串,數字或元組。
一個簡單的字典實例:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}複製代碼
也可如此建立字典:
dict1 = { 'abc': 456 }
dict2 = { 'abc': 123, 98.6: 37 }複製代碼
把相應的鍵放入到方括號中,以下實例:
實例
#!/usr/bin/python3
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])複製代碼
以上實例輸出結果:
dict['Name']: Runoob
dict['Age']: 7複製代碼
若是用字典裏沒有的鍵訪問數據,會輸出錯誤以下:
實例
#!/usr/bin/python3
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("dict['Alice']: ", dict['Alice'])複製代碼
以上實例輸出結果:
Traceback (most recent call last):
File "test.py", line 5, in <module>
print ("dict['Alice']: ", dict['Alice'])
KeyError: 'Alice'複製代碼
向字典添加新內容的方法是增長新的鍵/值對,修改或刪除已有鍵/值對以下實例:
實例
#!/usr/bin/python3
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8 # 更新 Age
dict['School'] = "菜鳥教程" # 添加信息
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])複製代碼
以上實例輸出結果:
dict['Age']: 8
dict['School']: 菜鳥教程複製代碼
能刪單一的元素也能清空字典,清空只需一項操做。
顯示刪除一個字典用del命令,以下實例:
實例
#!/usr/bin/python3
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
del dict['Name'] # 刪除鍵 'Name'
dict.clear() # 清空字典
del dict # 刪除字典
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])複製代碼
但這會引起一個異常,由於用執行 del 操做後字典再也不存在:
Traceback (most recent call last):
File "test.py", line 9, in <module>
print ("dict['Age']: ", dict['Age'])
TypeError: 'type' object is not subscriptable複製代碼
注:del() 方法後面也會討論。
字典值能夠是任何的 python 對象,既能夠是標準的對象,也能夠是用戶定義的,但鍵不行。
兩個重要的點須要記住:
1)不容許同一個鍵出現兩次。建立時若是同一個鍵被賦值兩次,後一個值會被記住,以下實例:
實例
#!/usr/bin/python3
dict = {'Name': 'Runoob', 'Age': 7, 'Name': '小菜鳥'}
print ("dict['Name']: ", dict['Name'])複製代碼
以上實例輸出結果:
dict['Name']: 小菜鳥複製代碼
2)鍵必須不可變,因此能夠用數字,字符串或元組充當,而用列表就不行,以下實例:
實例
#!/usr/bin/python3
dict = {['Name']: 'Runoob', 'Age': 7}
print ("dict['Name']: ", dict['Name'])複製代碼
以上實例輸出結果:
Traceback (most recent call last):
File "test.py", line 3, in <module>
dict = {['Name']: 'Runoob', 'Age': 7}
TypeError: unhashable type: 'list'複製代碼
Python字典包含了如下內置函數:
序號 | 函數及描述 | 實例 |
---|---|---|
1 | len(dict) 計算字典元素個數,即鍵的總數。 |
>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>> len(dict)
3複製代碼 |
2 | str(dict) 輸出字典,以可打印的字符串表示。 |
>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>> str(dict)
"{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"複製代碼 |
3 | type(variable) 返回輸入的變量類型,若是變量是字典就返回字典類型。 |
>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>> type(dict)
<class 'dict'>複製代碼 |
Python字典包含了如下內置方法:
序號 | 函數及描述 |
---|---|
1 | radiansdict.clear() 刪除字典內全部元素 |
2 | radiansdict.copy() 返回一個字典的淺複製 |
3 | radiansdict.fromkeys() 建立一個新字典,以序列seq中元素作字典的鍵,val爲字典全部鍵對應的初始值 |
4 | radiansdict.get(key, default=None) 返回指定鍵的值,若是值不在字典中返回default值 |
5 | key in dict 若是鍵在字典dict裏返回true,不然返回false |
6 | radiansdict.items() 以列表返回可遍歷的(鍵, 值) 元組數組 |
7 | radiansdict.keys() 返回一個迭代器,可使用 list() 來轉換爲列表 |
8 | radiansdict.setdefault(key, default=None) 和get()相似, 但若是鍵不存在於字典中,將會添加鍵並將值設爲default |
9 | radiansdict.update(dict2) 把字典dict2的鍵/值對更新到dict裏 |
10 | radiansdict.values() 返回一個迭代器,可使用 list() 來轉換爲列表 |
11 | pop(key[,default]) 刪除字典給定鍵 key 所對應的值,返回值爲被刪除的值。key值必須給出。 不然,返回default值。 |
12 | popitem() 隨機返回並刪除字典中的最後一對鍵和值。 |
集合(set)是一個無序的不重複元素序列。
可使用大括號 { } 或者 set() 函數建立集合,注意:建立一個空集合必須用 set() 而不是 { },由於 { } 是用來建立一個空字典。
建立格式:
parame = {value01,value02,...}
或者
set(value)複製代碼
實例(Python 3.0+)
>>>basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket) # 這裏演示的是去重功能
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket # 快速判斷元素是否在集合內
True
>>> 'crabgrass' in basket
False
>>> # 下面展現兩個集合間的運算.
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # 集合a中包含而集合b中不包含的元素
{'r', 'd', 'b'}
>>> a | b # 集合a或b中包含的全部元素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # 集合a和b中都包含了的元素
{'a', 'c'}
>>> a ^ b # 不一樣時包含於a和b的元素
{'r', 'd', 'b', 'm', 'z', 'l'}複製代碼
相似列表推導式,一樣集合支持集合推導式(Set comprehension):
實例(Python 3.0+)
>>>a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}複製代碼
語法格式以下:
s.add( x )複製代碼
將元素 x 添加到集合 s 中,若是元素已存在,則不進行任何操做。
實例(Python 3.0+)
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Taobao', 'Facebook', 'Google', 'Runoob'}複製代碼
還有一個方法,也能夠添加元素,且參數能夠是列表,元組,字典等,語法格式以下:
s.update( x )複製代碼
x 能夠有多個,用逗號分開。
實例(Python 3.0+)
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.update({1,3})
>>> print(thisset)
{1, 3, 'Google', 'Taobao', 'Runoob'}
>>> thisset.update([1,4],[5,6])
>>> print(thisset)
{1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}
>>>複製代碼
語法格式以下:
s.remove( x )複製代碼
將元素 x 從集合 s 中移除,若是元素不存在,則會發生錯誤。
實例(Python 3.0+)
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.remove("Taobao")
>>> print(thisset)
{'Google', 'Runoob'}
>>> thisset.remove("Facebook") # 不存在會發生錯誤
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Facebook'
>>>複製代碼
此外還有一個方法也是移除集合中的元素,且若是元素不存在,不會發生錯誤。格式以下所示:
s.discard( x )複製代碼
實例(Python 3.0+)
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.discard("Facebook") # 不存在不會發生錯誤
>>> print(thisset)
{'Taobao', 'Google', 'Runoob'}複製代碼
咱們也能夠設置隨機刪除集合中的一個元素,語法格式以下:
s.pop() 複製代碼
腳本模式實例(Python 3.0+)
輸出結果:
$ python3 test.py
Runoob複製代碼
屢次執行測試結果都不同。
然而在交互模式,pop 是刪除集合的第一個元素(排序後的集合的第一個元素)。
實例(Python 3.0+)
>>>thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
>>> thisset.pop()
'Facebook'
>>> print(thisset)
{'Google', 'Taobao', 'Runoob'}
>>>複製代碼
語法格式以下:
len(s)複製代碼
計算集合 s 元素個數。
實例(Python 3.0+)
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> len(thisset)
3複製代碼
語法格式以下:
s.clear()複製代碼
清空集合 s。
實例(Python 3.0+)
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.clear()
>>> print(thisset)
set()複製代碼
語法格式以下:
x in s複製代碼
判斷元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。
實例(Python 3.0+)
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> "Runoob" in thisset
True
>>> "Facebook" in thisset
False
>>>複製代碼
方法 | 描述 |
---|---|
add() | 爲集合添加元素 |
clear() | 移除集合中的全部元素 |
copy() | 拷貝一個集合 |
difference() | 返回多個集合的差集 |
difference_update() | 移除集合中的元素,該元素在指定的集合也存在。 |
discard() | 刪除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集。 |
isdisjoint() | 判斷兩個集合是否包含相同的元素,若是沒有返回 True,不然返回 False。 |
issubset() | 判斷指定集合是否爲該方法參數集合的子集。 |
issuperset() | 判斷該方法的參數集合是否爲指定集合的子集 |
pop() | 隨機移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回兩個集合中不重複的元素集合。 |
symmetric_difference_update() | 移除當前集合中在另一個指定集合相同的元素,並將另一個指定集合中不一樣的元素插入到當前集合中。 |
union() | 返回兩個集合的並集 |
update() | 給集合添加元素 |