接下來我會嚴格按照 我的施工計劃,往下推進這個開源項目( 目前 4300+ star ),鏈接爲:
https://github.com/jackzhenguo/python-small-examples
作爲開篇,再簡要總結下Python語言:
Python語言1989年由 Guido van Rossum 編寫,Python可以應用在衆多的領域中:數據分析、組建集成、網絡服務、圖像處理、數值計算和科學計算等領域。
Python應用的知名公司有:Youtube、Dropbox、BT、知乎、豆瓣、谷歌、百度、騰訊、汽車之家等。
Python可以做的工作有:自動化運維、測試、機器學習、深度學習、數據分析、爬蟲、Web等
我們通常使用C語言實現的編譯器,使用最爲廣泛, CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),然後運行在Python虛擬機上。
施工從談論數字開始
整數
Python2 有取值範圍,溢出後自動轉爲長整型
Python3 中爲長整型,無位數限制 理論上內存有多大,位數可能就有多大
長整數
Python2 中單獨對應 Long 類型
Python3 中不再有Long ,直接對應 int
浮點數
帶小數的數字
如果不帶數字,可能有 e 和 E
複數
高數中複數
結構爲:1+2j
下面是常用的數字相關的操作:
1 / 返回浮點數
即便兩個整數,/
操作也會返回浮點數
In [1]: 8/5
Out[1]: 1.6
2 // 得到整數部分
使用 //
快速得到兩數相除的整數部分,並且返回整型,此操作符容易忽略,但確實很實用。
In [2]: 8//5
Out[2]: 1
In [3]: a = 8//5
In [4]: type(a)
Out[4]: int
3 % 得到餘數
%
得到兩數相除的餘數:
In [6]: 8%5
Out[6]: 3
4 ** 計算乘方
**
計算幾次方
In [7]: 2**3
Out[7]: 8
5 交互模式下的_
在交互模式下,上一次打印出來的表達式被賦值給變量 _
In [8]: 2*3.02+1
Out[8]: 7.04
In [9]: 1+_
Out[9]: 8.04
6 十轉二
將十進制轉換爲二進制:
>>> bin(10)
'0b1010'
7 十轉八
十進制轉換爲八進制:
>>> oct(9)
'0o11'
8 十轉十六
十進制轉換爲十六進制:
>>> hex(15)
'0xf'
9 轉爲浮點類型
整數或數值型字符串轉換爲浮點數
>>> float(3)
3.0
如果不能轉化爲浮點數,則會報ValueError
:
>>> float('a')
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
float('a')
ValueError: could not convert string to float: 'a'
10 轉爲整型
int(x, base =10)
x 可能爲字符串或數值,將 x 轉換爲整數。
如果參數是字符串,那麼它可能包含符號和小數點。如果超出普通整數的表示範圍,一個長整數被返回。
>>> int('12',16)
18
11 商和餘數
分別取商和餘數
>>> divmod(10,3)
(3, 1)
12 冪和餘同時做
pow 三個參數都給出表示先冪運算再取餘:
>>> pow(3, 2, 4)
1
13 四捨五入
四捨五入,第二個參數代表小數點後保留幾位:
>>> round(10.045, 2)
10.04
>>> round(10.046, 2)
10.05
14 計算表達式
計算字符串型表達式的值
>>> s = "1 + 3 +5"
>>> eval(s)
9
>>> eval('[1,3,5]*3')
[1, 3, 5, 1, 3, 5, 1, 3, 5]
真假布爾值本質上也是用數字表示,所以也歸併到數字這個討論小節中。
15 真假
以下四種情況都爲假:
>>> bool(0)
False
>>> bool(False)
False
>>> bool(None)
False
>>> bool([])
False
以下這些情況爲真:
>>> bool([False])
True
>>> bool([0,0,0])
True
16 all 判斷元素是否都爲真
所有元素都爲真返回 True
,否則返回False
#有0,所以不是所有元素都爲真
>>> all([1,0,3,6])
False
#所有元素都爲真
>>> all([1,2,3])
True
17 any 判斷是否至少有一個元素爲真
至少有一個元素爲真返回True
,否則返回False
# 沒有一個元素爲真
>>> any([0,0,0,[]])
False
# 至少一個元素爲真
>>> any([0,0,1])
True
18 鏈式比較
Python 支持下面這種鏈式比較,非常方便:
>>> i = 3
>>> 1 < i < 3
False
>>> 1 < i <=3
True
19 交換元素
Python 除了支持上面的鏈式比較外,還支持一種更加方便的操作:直接解包賦值。
如下所示,1,3 解包後分別賦值給a, b ,利用此原理一行代碼實現兩個數字的直接交換。
a, b = 1, 3
a, b = b, a # 交換a,b
如果明白此原理,下面的賦值就會迎刃而解:
a,b = 1, 3
a, b = b+1, a-1
print(a,b) # 結果是多少?
有的朋友會有疑問:是 b+1 賦值給 a 後,a-1再賦值給 b ?
如果明白了上面的原理:等號右面完成壓包,左側再解包,就會立即得出答案:肯定不是。
下面這行代碼:
a, b = b+1, a-1
等價於:
c = b+1, a-1 # 壓包
a, b = c # 解包
答案是:a=4, b=0
壓包和解包還有更加複雜的用法,放到後面進階部分總結。
20 鏈式操作
下面這個例子使用 operator 模塊中 add, sub 函數,根據操作符+,-,生成對應的函數,然後直接調用。有種設計模式中最頻繁使用的對象工廠模式的意思。
>>> from operator import (add, sub)
>>> def add_or_sub(a, b, oper):
return (add if oper == '+' else sub)(a, b)
>>> add_or_sub(1, 2, '-')
-1
以上就是數字這一小節的總結。
按照我的施工計劃,數字小節施工完成,獲得一枚紅旗。
如果你喜歡這個開源項目,歡迎點擊在看支持我一下,這對我持續向前保持動力來說很重要。
歡迎關注這個庫的官方公衆號:Python小例子:
長按二維碼
關注Python小例子