一、變量
聲明變量
#!/usr/bin/env python
age=9
name='ld'
name1='ld1'
變量作用:保存狀態(程序的運行本質是一系列狀態的變化,變量的目的就是用來保存狀態,變量值的變化就構成了程序運行的不同結果。)
二.數據類型
程序的本質就是驅使計算機去處理各種狀態的變化,這些狀態分爲很多種
2.1 什麼是數據類型及數據類型分類
python中的數據類型
python使用對象模型來存儲數據,每一個數據類型都有一個內置的類,每新建一個數據,實際就是在初始化生成一個對象,即所有數據都是對象
對象三個特性
身份:內存地址,可以用id()獲取
類型:決定了該對象可以保存什麼類型值,可執行何種操作,需遵循什麼規則,可用type()獲取
值:對象保存的真實數據
2.2 標準數據類型:
2.2.1 數字
定義:a=1
特性:
1.只能存放一個值
2.一經定義,不可更改
3.直接訪問
分類:整型,長整型,布爾,浮點,複數
2.2.1.1 整型:
Python的整型相當於C中的long型,Python中的整數可以用十進制,八進制,十六進制表示。
>>> 10
10 --------->默認十進制
>>> oct(10)
'012' --------->八進制表示整數時,數值前面要加上一個前綴“0”
>>> hex(10)
'0xa' --------->十六進制表示整數時,數字前面要加上前綴0X或0x
python2.*與python3.*關於整型的區別
python2.*
在32位機器上,整數的位數爲32位,取值範圍爲-2**31~2**31-1,即-2147483648~2147483647
在64位系統上,整數的位數爲64位,取值範圍爲-2**63~2**63-1,即-9223372036854775808~9223372036854775807
python3.*整形長度無限制
2.2.1.2 長整型long:
python2.*:
跟C語言不同,Python的長整型沒有指定位寬,也就是說Python沒有限制長整型數值的大小,
但是實際上由於機器內存有限,所以我們使用的長整型數值不可能無限大。
在使用過程中,我們如何區分長整型和整型數值呢?
通常的做法是在數字尾部加上一個大寫字母L或小寫字母l以表示該整數是長整型的,例如:
a = 9223372036854775808L
注意,自從Python2起,如果發生溢出,Python會自動將整型數據轉換爲長整型,
所以如今在長整型數據後面不加字母L也不會導致嚴重後果了。
python3.*
長整型,整型統一歸爲整型
python2.7
>>> a=9223372036854775807
>>> a
9223372036854775807
>>> a+=1
>>> a
9223372036854775808L
python3.5
>>> a=9223372036854775807
>>> a
9223372036854775807
>>> a+=1
>>> a
9223372036854775808
2.2.1.3 布爾bool:
True 和False
1和0
2.2.1.4 浮點數float:
Python的浮點數就是數學中的小數,類似C語言中的double。
在運算中,整數與浮點數運算的結果是浮點數
浮點數也就是小數,之所以稱爲浮點數,是因爲按照科學記數法表示時,
一個浮點數的小數點位置是可變的,比如,1.23*109和12.3*108是相等的。
浮點數可以用數學寫法,如1.23,3.14,-9.01,等等。但是對於很大或很小的浮點數,
就必須用科學計數法表示,把10用e替代,1.23*109就是1.23e9,或者12.3e8,0.000012
可以寫成1.2e-5,等等。
整數和浮點數在計算機內部存儲的方式是不同的,整數運算永遠是精確的而浮點數運算則可能會有
四捨五入的誤差。
2.2.1.5 複數complex:
複數由實數部分和虛數部分組成,一般形式爲x+yj,其中的x是複數的實數部分,y是複數的虛數部分,這裏的x和y都是實數。
注意,虛數部分的字母j大小寫都可以,
>>> 1.3 + 2.5j == 1.3 + 2.5J
True
2.2.1.6 數字相關內建函數
2.2.2 字符串
定義:它是一個有序的字符的集合,用於存儲和表示基本的文本信息,‘’或“”或‘’‘ ’‘’中間包含的內容稱之爲字符串
特性:
1.只能存放一個值
2.不可變
3.按照從左到右的順序定義字符集合,下標從0開始順序訪問,有序
補充:
1.字符串的單引號和雙引號都無法取消特殊字符的含義,如果想讓引號內所有字符均取消特殊意義,在引號前面加r,如name=r'l\thf'
2.unicode字符串與r連用必需在r前面,如name=ur'l\thf'
2.2.2.1 字符串創建
‘hello world’
2.2.2.2 字符串常用操作
移除空白
分割
長度
索引
切片
2.2.3 列表
定義:[]內以逗號分隔,按照索引,存放各種數據類型,每個位置代表一個元素
特性:
1.可存放多個值
2.可修改指定索引位置對應的值,可變
3.按照從左到右的順序定義列表元素,下標從0開始順序訪問,有序
2.2.3.1 列表創建
list_test=[’ld‘,66,'ok']
或
list_test=list('abc')
或
list_test=list([’ld‘,66,'ok'])
2.2.3.2 列表常用操作
索引
切片
追加
刪除
長度
切片
循環
包含
2.2.3 列表
定義:[]內以逗號分隔,按照索引,存放各種數據類型,每個位置代表一個元素
特性:
1.可存放多個值
2.可修改指定索引位置對應的值,可變
3.按照從左到右的順序定義列表元素,下標從0開始順序訪問,有序
2.2.3.1 列表創建
list_test=[’ld‘,666,'ok']
或
list_test=list('abc')
或
list_test=list([’ld‘,6,'ok'])
2.2.3.2 列表常用操作
索引
切片
追加
刪除
長度
切片
循環
包含
2.2.4 元組
定義:與列表類似,只不過[]改成()
特性:
1.可存放多個值
2.不可變
3.按照從左到右的順序定義元組元素,下標從0開始順序訪問,有序
2.2.4.1 元組創建
ages = (11, 22, 33, 44, 55)
或
ages = tuple((11, 22, 33, 44, 55))
2.2.4.2 元組常用操作
索引
切片
循環
長度
包含
2.2.5 字典
定義:{key1:value1,key2:value2},key-value結構,key必須可hash
特性:
1.可存放多個值
2.可修改指定key對應的值,可變
3.無序
2.2.5.1 字典創建
person = {"name": "aa", 'age': 22}
或
person = dict(name='aa', age=22)
person = dict({"name": "aa", 'age': 22})
person = dict((['name','aa'],['age',22]))
{}.fromkeys(seq,100) #不指定100默認爲None
注意:
>>> dic={}.fromkeys(['k1','k2'],[])
>>> dic
{'k1': [], 'k2': []}
>>> dic['k1'].append(1)
>>> dic
{'k1': [1], 'k2': [1]}
2.2.5.2 字典常用操作
索引
新增
刪除
鍵、值、鍵值對
循環
長度
2.2.6 集合
定義:由不同元素組成的集合,集合中是一組無序排列的可hash值,可以作爲字典的key
特性:
1.集合的目的是將不同的值存放到一起,不同的集合間用來做關係運算,無需糾結於集合中單個值
2.2.6.1 集合創建
{1,2,3,1}
或
定義可變集合set
>>> set_test=set('hello')
>>> set_test
{'l', 'o', 'e', 'h'}
改爲不可變集合frozenset
>>> f_set_test=frozenset(set_test)
>>> f_set_test
frozenset({'l', 'e', 'h', 'o'})
2.2.6.2 集合常用操作:關係運算
in
not in
==
!=
<,<=
>,>=
|,|=:合集
&.&=:交集
-,-=:差集
^,^=:對稱差分
三.運算符
1、算數運算:
2、比較運算:
3、賦值運算:
4、位運算:
5、邏輯運算:
and註解:
1、在Python 中,and 和 or 執行布爾邏輯演算,如你所期待的一樣,但是它們並不返回布爾值;而是,返回它們實際進行比較的值之一。
2、在布爾上下文中從左到右演算表達式的值,如果布爾上下文中的所有值都爲真,那麼 and 返回最後一個值。
3、如果布爾上下文中的某個值爲假,則 and 返回第一個假值
or註解:
1、使用 or 時,在布爾上下文中從左到右演算值,就像 and 一樣。如果有一個值爲真,or 立刻返回該值
2、如果所有的值都爲假,or 返回最後一個假值
3、注意 or 在布爾上下文中會一直進行表達式演算直到找到第一個真值,然後就會忽略剩餘的比較值
and-or結合使用:
結合了前面的兩種語法,推理即可。
爲加強程序可讀性,最好與括號連用,例如:
(1 and 'x') or 'y'
6、成員運算:
7.身份運算
8.運算符優先級:自上而下,優先級從高到低
四.標準數據類型特性總結
按存值個數區分
標量/原子類型 | 數字,字符串 |
容器類型 | 列表,元組,字典 |
按可變不可變區分
可變 | 列表,字典 |
不可變 | 數字,字符串,元組 |
按訪問順序區分
直接訪問 | 數字 |
順序訪問(序列類型) | 字符串,列表,元組 |
key值訪問(映射類型) | 字典 |