一、python基礎之數據類型與變量

一、變量


聲明變量

#!/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 數字相關內建函數

1036857-20161007202627379-994345539.png


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、算數運算:

1036857-20161011085945461-141241132.png

2、比較運算:

1036857-20161011090004352-1793064865.png

3、賦值運算:

1036857-20161011090015164-795424787.png

4、位運算:

1036857-20161011090217446-1562320241.png

5、邏輯運算:

1036857-20161011090025071-1236899190.png

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、成員運算:

1036857-20161011090033196-468321512.png

7.身份運算

1036857-20161011090232368-83323653.png

8.運算符優先級:自上而下,優先級從高到低

1036857-20161011090258805-1359487251.png


四.標準數據類型特性總結

按存值個數區分

標量/原子類型數字,字符串
容器類型列表,元組,字典

 

 

按可變不可變區分

可變列表,字典
不可變數字,字符串,元組

 

 

按訪問順序區分

直接訪問數字
順序訪問(序列類型)字符串,列表,元組
key值訪問(映射類型)字典



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章