1. 程式人生 > >python基礎8 數據類型和數據運算

python基礎8 數據類型和數據運算

進制轉化 一位 都是 進行 4.0 aid 系統 左移 標識符

本節內容:

  1. 數據類型
  2. 數據運算
  3. 入門拾遺
  4. 參考網頁

數據類型

數字

int(整型)

在32位機器上,整數的位數為32位,取值範圍為-231~231-1,即-2147483648~2147483647  在64位系統上,整數的位數為64位,取值範圍為-263~263-1,即-9223372036854775808~9223372036854775807

long(長整型)

跟C語言不同,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上由於機器內存有限,我們使用的長整數數值不可能無限大。

註意

自從Python2.2起,如果整數發生溢出,Python會自動將整數數據轉換為長整數,所以如今在長整數數據後面不加字母L也不會導致嚴重後果了。

python2裏 2的62次方是int,2的63次方變成長整型。python3裏都是整型,沒有長整型概念。

float(浮點型)

浮點數用來處理實數,即帶有小數的數字。類似於C語言中的double類型,占8個字節(64位),其中52位表示底,11位表示指數,剩下的一位表示符號。

  • complex(復數)   復數由實數部分和虛數部分組成,一般形式為x+yj,其中的x是復數的實數部分,y是復數的虛數部分,這裏的x和y都是實數。 註:Python中存在小數字池:-5 ~ 257

補充

3.23和52.3E-4是浮點數的例子。E標記表示10的冪。在這裏,52.3E-4表示52.3 * 10-4。

布爾值

真或假   1 或 0

字符串

"hello world" 字符串拼接:   python中的字符串在C語言中體現為是一個字符數組,每次創建字符串時候需要在內存中開辟一塊連續的空,並且一旦需要修改字符串的話,就需要再次開辟空間,拼接+號每出現一次就會在內從中重新開辟一塊空間。

字符串格式化輸出

name = "cathywu"
print ("I am %s " % name)

#輸出: I am cathywu

字符串是 %s;整數 %d;浮點數%f

字符串常用功能:

  • 移除空白
  • 分割
  • 長度
  • 索引
  • 切片

列表

列表list是一種有序的集合,可以隨時添加和刪除其中的元素。

創建列表:

name_list = [‘Cathywu‘, ‘seven‘, ‘eric‘]

基本操作:

  • 索引
  • 切片
  • 追加
  • 刪除
  • 長度
  • 切片
  • 循環
  • 包含

元組(不可變列表)

元組tuple是另一種有序的列表。tuple 和 list 非常類似,但是,tuple一旦創建完畢,就不能修改了。

創建元組:

ages = (11, 22, 33, 44, 55)

字典(無序)

字典查找速度快,無序,作為 key 的元素必須不可變,Python的基本類型如字符串、整數、浮點數都是不可變的,都可以作為 key。但是list是可變的,就不能作為 key。

創建字典:

person = {"name": "mr.wu", ‘age‘: 18}

常用操作:

  • 索引
  • 新增
  • 刪除
  • 鍵、值、鍵值對
  • 循環
  • 長度

集合

集合是無序的,不重復的元素集,類似數學中的集合,可進行邏輯運算和算術運算

創建集合

s = set([‘A‘, ‘B‘, ‘C‘])

數據運算

算術運算

以下假設變量: a=10,b=20:

運算符描述實例
+ 加 兩個對象相加 a+b輸出30
- 號負或減 負數或是一個數減去另一個數 -a 或 a-b輸出-10
* 乘 兩個數相乘或返回一個被重復若幹次的字符串 a*b輸出200
/ b/a輸出2
% 取模 返回除法的余數 b%a輸出0
** 冪 返回x的y次冪 a**b為10的20次冪
// 取整 返回商的整數部分 9//2輸出4,9.0//2.0輸出4.0

比較運算

運算符描述實例
== 等於 比較對象是否相等 (a==b)返回False
!= 不等於 比較兩個對象是否不相等 (a!=b)返回True
<> 不等於 比較兩個對象是否不相等 (a<>b)返回True
> 大於 返回x是否大於y (a>b)返回False
< 小於 返回x是否小於y (a<b)返回True
>= 大於等於 返回x是否大於等於y (a>=b)返回False
<+ 小於等於 返回x是否小於等於y (a<b)返回True

賦值運算

運算符描述實例
= 簡單的賦值運算符 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

邏輯運算符

運算符邏輯表達式描述實例
and x and y 布爾“與”,如果x為False, x and y 返回False,否則返回y的計算值。 (a and b) 返回 20。
or x or y 布爾"或" - 如果 x 是非 0,它返回 x 的值,否則它返回 y 的計算值。 (a or b) 返回 10。
not not x 布爾"非" - 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。 not(a and b) 返回 False

成員運算

運算符描述實例
in 如果在指定的序列中找到值返回 True,否則返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in 如果在指定的序列中沒有找到值返回 True,否則返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

身份運算

運算符描述實例
is is是判斷兩個標識符是不是引用自一個對象 x is y, 如果 id(x) 等於 id(y) , is 返回結果 1
is not is not是判斷兩個標識符是不是引用自不同對象 x is not y, 如果 id(x) 不等於 id(y). is not 返回結果 1

位運算符

按位運算符是把數字看作二進制來進行計算的。 變量 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 (~a ) 輸出結果 -61 ,二進制解釋: 1100 0011, 在一個有符號二進制數的補碼形式。
<< 左移動運算符:運算數的各二進位全部左移若幹位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0。 a << 2 輸出結果 240 ,二進制解釋: 1111 0000
>> 右移動運算符:把">>"左邊的運算數的各二進位全部右移若幹位,">>"右邊的數指定移動的位數 a >> 2 輸出結果 15 ,二進制解釋: 0000 1111

運算符優先級

運算符描述
** 指數 (最高優先級)
~ + - 按位翻轉, 一元加號和減號 (最後兩個的方法名為 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法減法
>> << 右移,左移運算符
& 位 ‘AND‘
^ 按位或 位運算符
<= < > >= 比較運算符
<> == != 等於運算符
= %= /= //= -= += *= **= 賦值運算符
is is not 身份運算符
in not in 成員運算符
not or and 邏輯運算符

入門拾遺漏

三元運算

三元運算,是軟件編程中的一個固定格式。

  • 格式 語法為:條件表達式?表達式1:表達式2。 說明:問號前面的位置是判斷的條件,判斷結果為bool型,為true時調用表達式1,為false時調用表達式2。 其邏輯為:“如果為真執行第一個,否則執行第二個。”
  • 例子 1 if 5>3 else 0 輸出1,如果5大於3,否則輸出0

進制

十六進制

0 1 2 3 4 5 6 7 8 9 A B C D E F

十六進制與二進制對應關系

二進制十六進制二進制十六進制
0000 0 1000 8
0001 1 1001 9
0010 2 1010 A
0011 3 1011 B
0100 4 1100 C
0101 5 1101 D
0110 6 1110 E
0111 7 1111 F

二進制轉換成十六進制

二進制轉換成十六進制的方法是,取四合一法,即從二進制的小數點為分界點,向左(或向右)每四位取成一位 二進制: 11101110011011.1001 化為十六進制為:3B9B.9

十六進制轉化為二進制

組分好以後,對照二進制與十六進制數的對應表,將四位二進制按權相加,得到的數就是一位十六進制數,然後按順序排列,小數點的位置不變哦,最後得到的就是十六進制數。 十六進制:F8C.6 二進制:111110001100.011

註意16進制的表示法,用字母H後綴表示,比如BH就表示16進制數11;也可以用0X前綴表示,比如0X23就是16進制的23.

bytes類型

python2 裏字節和字符是一樣的。 python3裏有專門的數據類型 bytes。 python3裏所有的數據傳輸都是以二進制形式傳輸。python2可以以字符串的形式傳輸。

Python 3中對文本和二進制數據作了更為清晰的區分。文本總是Unicode,由str類型表示,二進制數據則由bytes類型表示。Python 3不會以任意隱式的方式混用str和bytes,正是這使得兩者的區分特別清晰。你不能拼接字符串和字節包,也無法在字節包裏搜索字符串(反之亦然),也不能將字符串傳入參數為字節包的函數(反之亦然)。這是件好事。 python3裏所有的數據傳輸都是以二進制形式傳輸。python2可以以字符串的形式傳輸。 字符串可以編碼成字節包,而字節包可以解碼成字符串。如下圖:

stringbytesencodedecodestringbytes

舉例:

>>>‘€20‘.encode(‘utf-8‘)
b‘\xe2\x82\xac20‘
>>> b‘\xe2\x82\xac20‘.decode(‘utf-8‘)
‘€20‘

參考網頁

http://www.runoob.com/python/python-operators.html

http://blog.csdn.net/wenxinwukui234/article/details/42119265

http://www.cnblogs.com/txw1958/archive/2012/07/19/2598885.html

python基礎8 數據類型和數據運算