python學(xué)習(xí)

python基礎(chǔ)之?dāng)?shù)據(jù)類型和變量

一边灭、整數(shù)

Python可以處理任意大小的整數(shù),當(dāng)然包括負(fù)整數(shù)健盒,在程序中的表示方法和數(shù)學(xué)上的寫法一模一樣存筏,例如:1,100味榛,-8080,0予跌,等等搏色。

二、浮點數(shù)

浮點數(shù)也就是小數(shù)券册,之所以稱為浮點數(shù)频轿,是因為按照科學(xué)記數(shù)法表示時,一個浮點數(shù)的小數(shù)點位置是可變的烁焙,比如航邢,1.23x109和12.3x108是相等的。浮點數(shù)可以用數(shù)學(xué)寫法骄蝇,如1.23膳殷,3.14,-9.01九火,等等赚窃。但是對于很大或很小的浮點數(shù),就必須用科學(xué)計數(shù)法表示岔激,把10用e替代勒极,1.23x109就是1.23e9,或者12.3e8虑鼎,0.000012可以寫成1.2e-5辱匿,等等。

整數(shù)和浮點數(shù)在計算機內(nèi)部存儲的方式是不同的炫彩,整數(shù)運算永遠是精確的(除法難道也是精確的匾七?是的!)江兢,而浮點數(shù)運算則可能會有四舍五入的誤差乐尊。

三、字符串

字符串是以單引號''或雙引號"" 括起來的任意文本划址,比如'abc'扔嵌,"xyz"等等限府。

'''...'''三引號可以用來顯示多行字符串內(nèi)容,如:

>>> print '''line1
... line2
... line3'''
line1
line2
line3

如涉及到中文字符痢缎,盡量在字符串前面加u胁勺,如u'張三'

%s表示用字符串替換,%d表示用整數(shù)替換独旷,有幾個%?占位符署穗,后面就跟幾個變量或者值,順序要對應(yīng)好嵌洼。

>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'

format()

另一種格式化字符串的方法是使用字符串的format()方法案疲,它會用傳入的參數(shù)依次替換字符串內(nèi)的占位符{0}{1}……麻养,不過這種方式寫起來比%要麻煩得多:

'Hello, {0}, 成績提升了 {1:.1f}%'.format('小明', 17.125)

字符串拼接直接對兩字符串相加即可

>>> 'hello' + ' world!'
'hello world!'

注意:

由于Python源代碼也是一個文本文件褐啡,所以,當(dāng)你的源代碼中包含中文的時候鳖昌,在保存源代碼時备畦,就需要務(wù)必指定保存為UTF-8編碼。當(dāng)Python解釋器讀取源代碼時许昨,為了讓它按UTF-8編碼讀取懂盐,我們通常在文件開頭寫上這兩行:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

四、布爾值

布爾值只有True糕档、False兩種值莉恼。

五、空值

空值是Python里一個特殊的值速那,用None表示类垫。None不能理解為0,因為0是有意義的琅坡,而None是一個特殊的空值

六悉患、操作符

算術(shù)運算符: +(加), -(減), *(乘), /(除), %(求余), **(指數(shù)運算)

比較運算符: == , != , > , >= , < , <=

賦值運算符: =, += , -= , *= , /= , %= , **= , //=

邏輯運算符: and , or , not

成員運算符: in , not in

身份運算符: is / is not

七、變量

變量在程序中就是用一個變量名表示了榆俺,變量名必須是大小寫英文售躁、數(shù)字和_的組合,且不能用數(shù)字開頭茴晋。

如:

a = 1

變量a是一個整數(shù)陪捷。

t_007 = 'T007'

變量t_007是一個字符串。

Answer = True

變量Answer是一個布爾值True诺擅。

這種變量本身類型不固定的語言稱之為動態(tài)語言市袖,與之對應(yīng)的是靜態(tài)語言。靜態(tài)語言在定義變量時必須指定變量類型,如果賦值的時候類型不匹配苍碟,就會報錯酒觅。例如Java是靜態(tài)語言,賦值語句如下(// 表示注釋):

int a = 123; // a是整數(shù)類型變量
a = "ABC"; // 錯誤:不能把字符串賦給整型變量

和靜態(tài)語言相比微峰,動態(tài)語言更靈活舷丹,就是這個原因。

也可以把一個變量a賦值給另一個變量b蜓肆,這個操作實際上是把變量b指向變量a所指向的數(shù)據(jù)颜凯,例如下面的代碼:

a = 'ABC'
b = a
a = 'XYZ'
print b

最后打印的b即是:'ABC'

常量

所謂常量就是不能變的變量,比如常用的數(shù)學(xué)常數(shù)π就是一個常量仗扬。在Python中症概,通常用全部大寫的變量名表示常量:

PI = 3.14159265359

但事實上PI仍然是一個變量,Python根本沒有任何機制保證PI不會被改變早芭,所以彼城,用全部大寫的變量名表示常量只是一個習(xí)慣上的用法,如果你一定要改變變量PI的值逼友,也沒人能攔住你。

在計算機內(nèi)部秤涩,可以把任何數(shù)據(jù)都看成一個“對象”帜乞,而變量就是在程序中用來指向這些數(shù)據(jù)對象的,對變量賦值就是把數(shù)據(jù)和變量給關(guān)聯(lián)起來筐眷。

八黎烈、List和tuple

List

這就是Java或C中的數(shù)組.它是一個容器,能用來順序的,以整數(shù)索引方式檢索, 存儲一組對象. List[] 來表示,如 [1, 2, 3] 就是一個List;而 Tuple() 來表示,如 (3, 4, 5) 就是一個 Tuple .

它們的區(qū)別在于List是可變的匀谣;而Tuple是不可變的.也就是說不可以增,刪和改.

索引方式除了與Java一樣的以一個整數(shù)下標(biāo)方式外,還可以指定開始,結(jié)束和步長,和使用負(fù)索引來分割List:

通用語法格式是: list[start: end: step]

list[index] --- 返回第(index+1)個元素,下標(biāo)從0開始  
list[start:end] --- 返回從start開始,到end-1,也就是list[start], list[start+1].....list[end-1]  
list[start:end:step] --- 與上面類似,只不過每隔step取一個  
list[:end]  ---- 缺省的開端是0  
list[start:] ---- 缺省的結(jié)尾是len(list),或者-1  
負(fù)數(shù)索引更是方便,它與正數(shù)的對應(yīng)關(guān)系為:  
正數(shù)索引   0    1      2      3
數(shù)組元素  [1]   [3]    [5]    [7]
負(fù)數(shù)索引  -4    -3      -2    -1

實例:

>>> a = [1, 3, 5, 7];  
>>> a[0]  
1  
>>> a[3]  
7  
>>> a[-1]  
7  
>>> a[-2]  
5  
>>> a[0:3]  
[1, 3, 5]  
>>> a[1:3:2]  
[3]  
>>> a[0:3:2]  
[1, 5]  
>>> a[0:-1:2]  
[1, 5]  
>>>

list增刪查改:

//list是一個可變的有序表照棋,所以,可以往list中追加元素到末尾:
list.append('Adam')
//也可以把元素插入到指定的位置武翎,比如索引號為1的位置:
list.insert(1, 'Jack')
//要刪除list末尾的元素烈炭,用pop()方法:
list.pop()
//要刪除指定位置的元素,用pop(i)方法宝恶,其中i是索引位置:
list.pop(i)

list里面的元素的數(shù)據(jù)類型也可以不同

list里面也可以包含list

list的遍歷:

for item in sequence:
        process(item)
        
#如果要取到某個item的位置符隙,可以這樣寫:
for index in range(len(sequence)):
        process(sequence[index])

for index,item in enumerate(sequence):
        print index,item

tuple
tuple和list非常類似,但是tuple一旦初始化就不能修改垫毙,比如同樣是列出同學(xué)的名字:

classmates = ('Michael', 'Bob', 'Tracy')

現(xiàn)在霹疫,classmates這個tuple不能變了,它也沒有append()综芥,insert()這樣的方法丽蝎。其他獲取元素的方法和list是一樣的,你可以正常地使用classmates[0]膀藐,classmates[-1]屠阻,但不能賦值成另外的元素红省。

tuple里面的元素如果是一個可變對象,那么這個對象的子屬性是可以被改變的栏笆,對象本身的索引是不可改變的类腮。

如tuple里面包含一個listA,我們可以往listA里面append蛉加,insert蚜枢,但是你不能對listA賦值,不能刪掉listA针饥。

九厂抽、dict和set

dict

dict全稱dictionary,在其他語言中也稱為map丁眼,使用鍵-值(key-value)存儲筷凤,具有極快的查找速度。

例:

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95
>>> d['Michael'] = 90
>>> d['Michael']
90

  • 多次對一個key放入value苞七,后面的值會把前面的值沖掉
  • 如果key不存在藐守,dict就會報錯
    要避免key不存在的錯誤,有兩種辦法蹂风,一是通過in判斷key是否存在:
>>> 'Thomas' in d
False

二是通過dict提供的get方法卢厂,如果key不存在,可以返回None惠啄,或者自己指定的value:

>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
  • pop(key) 刪除并返回該條目值(鍵值對)
  • del d[key] 也可以刪除指定元素

遍歷dict

# 方法一
for key in d: 
     n = d[key]
     
# 方法二:最慢
for k,v in d.items(): 
    n = v

# 方法三: 最快慎恒,推薦方法
for k,v in d.iteritems(): 
    n = v 

# 方法四
for k,v in zip(d.iterkeys(),d.itervalues()): 
    n = v 

set

set和dict類似,也是一組key的集合撵渡,但不存儲value融柬。由于key不能重復(fù),所以趋距,在set中粒氧,沒有重復(fù)的key。

要創(chuàng)建一個set节腐,需要提供一個list作為輸入集合:

>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}

重復(fù)元素在set中自動被過濾:

>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}

通過add(key)方法可以添加元素到set中靠欢,可以重復(fù)添加,但不會有效果

>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(4)
>>> s
{1, 2, 3, 4}

通過remove(key)方法可以刪除元素:

>>> s.remove(4)
>>> s
{1, 2, 3}

set可以看成數(shù)學(xué)意義上的無序和無重復(fù)元素的集合铜跑,因此门怪,兩個set可以做數(shù)學(xué)意義上的交集、并集等操作:

>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}

十锅纺、分支語句

格式為:

if expression:  
      blocks;  
elif expression2:  
      blocks;  
else:  
      blocks; 

十一掷空、循環(huán)

for循環(huán)

格式:

for x in list:
    break;
# 取出下標(biāo)和值
for index,value in enumerate(A):
     print index

例:

names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)
//或者
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
    print(x)

while循環(huán)

格式:

while expression:
      blocks
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子坦弟,更是在濱河造成了極大的恐慌护锤,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酿傍,死亡現(xiàn)場離奇詭異烙懦,居然都是意外死亡,警方通過查閱死者的電腦和手機赤炒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門氯析,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人莺褒,你說我怎么就攤上這事掩缓。” “怎么了遵岩?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵你辣,是天一觀的道長。 經(jīng)常有香客問我尘执,道長舍哄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任誊锭,我火速辦了婚禮表悬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘炉旷。我一直安慰自己签孔,他們只是感情好叉讥,可當(dāng)我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布窘行。 她就那樣靜靜地躺著,像睡著了一般图仓。 火紅的嫁衣襯著肌膚如雪罐盔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天救崔,我揣著相機與錄音惶看,去河邊找鬼。 笑死六孵,一個胖子當(dāng)著我的面吹牛纬黎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播劫窒,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼本今,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起冠息,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤挪凑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后逛艰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躏碳,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年散怖,在試婚紗的時候發(fā)現(xiàn)自己被綠了菇绵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡杭抠,死狀恐怖脸甘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情偏灿,我是刑警寧澤丹诀,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站翁垂,受9級特大地震影響铆遭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沿猜,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一枚荣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧啼肩,春花似錦橄妆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赦拘,卻和暖如春慌随,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背躺同。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工阁猜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蹋艺。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓剃袍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親捎谨。 傳聞我的和親對象是個殘疾皇子民效,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容