大資料基礎----Python入門

Aquanmarine發表於2018-01-04

Python入門

一、基礎語法
1、Python中資料型別
整數,浮點數,字串,布林值,空值(None)
2、print語句
注意:
1.當我們在Python互動式環境下編寫程式碼時,>>>是Python直譯器的提示符,不是程式碼的一部分。
2.當我們在文字編輯器中編寫程式碼時,千萬不要自己新增 >>>。
print語句也可以跟上多個字串,用逗號“,”隔開,就可以連成一串輸出。print會依次列印每個字串,遇到逗號“,”會輸出一個空格。
3、註釋
Python的註釋以 # 開頭,後面的文字直到行尾都算註釋。
多行註釋是用三引號''' '''。
4、變數
變數是用一個變數名錶示,變數名必須是大小寫英文、數字和下劃線(_)的組合,且不能用數字開頭。
5、字串
(1)字串可以用''或者""括起來表示。
注意:
如果字串包含",我們就可以用' '括起來。
同理,如果字串包含',我們就可以用""括起來.
如果字串既包含'又包含",對字串的某些特殊字元進行“轉義”,Python字串用\進行轉義。
如:

#LiMing said ”I’m a gay”!應表示為
LiMing said /”I/’m a gay/”!

(2) raw字串與多行字串
raw字串裡面的字元不需要轉義,r’…’表示單行字元,r’’’…’’’表多行。
6、Unicode
Unicode把所有語言都統一到一套編碼裡,這樣就不會再有亂碼問題了。
Unicode通常用兩個位元組表示一個字元,原有的英文編碼從單位元組變成雙位元組,只需要把高位元組全部填為0就可以。

print u'中文'
#多行
u'''第一行 
第二行'''
raw+多行:
ur'''Python的Unicode字串支援"中文",
"日文",
"韓文"等多種語言'''

二、list
(1)list是一種有序的集合,可以隨時新增和刪除其中的元素。 用[ ] 把list的所有元素都括起來,就是一個list物件。
(2)按索引訪問list(類似於陣列)。
(3)倒序訪問list. 例如:

L = [95.5, 85, 59]
print L[-1] #輸出59
print L[-2] #輸出85
print L[-3] #輸出95.5

(4)新增元素。append()總是把新的元素新增到 list 的尾部。 insert()方法,它接受兩個引數,第一個引數是索引號,第二個引數是待新增的新元素。
(5)刪除元素。pop()方法會返回被刪除的元素。
三、tuple
(1)tuple是另一種有序的列表,中文翻譯為“ 元組 ”。tuple 和 list 非常類似,但是,tuple一旦建立完畢,就不能修改了。建立tuple和建立list唯一不同之處是用( )替代了[ ]。獲取 tuple 元素的方式和 list 是一模一樣的。
(2)建立單元素tuple。t = (1,)
四、if語句,for迴圈,while迴圈
注意縮排,4個空格。例如:

(1)

if score>60:
    print 'passed'
#if-elif-else
if age >= 18:
    print 'adult'
elif age >= 6:
    print 'teenager'
elif age >= 3:
    print 'kid'
else:
print 'baby'

(2)for迴圈

L = ['Adam', 'Lisa', 'Bart']
for name in L:
print name

(3)while迴圈

N = 10
x = 0
while x < N:
    print x
    x = x + 1

(4)使用break跳出迴圈,continue繼續迴圈。
五、dict集合(key:value)
dict的作用是建立一組 key 和一組 value 的對映關係,dict的key是不能重複的。
例如:

d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}

擴充:len()可以計算任何集合的大小。
(1)訪問dict.可使用 d[key] 的形式來查詢對應的 value。
注意: 通過 key 訪問 dict 的value,只要 key 存在,dict就返回對應的value。如果key不存在,會直接報錯:KeyError。
要避免 KeyError 發生,有兩個辦法:
一是先判斷一下 key 是否存在,用 in 操作符。
二是使用dict本身提供的一個 get 方法,在Key不存在的時候,返回None
(2)dict的特點
dict的第一個特點是查詢速度快,dict的第二個特點就是儲存的key-value序對是沒有順序的,dict的第三個特點是作為 key 的元素必須不可變,所以list不能作為key。
(3)遍歷dict 例如:

for key in d:
...     print key

六、set
set 持有一系列元素,這一點和 list 很像,但是set的元素不重複,而且是無序的,這點和 dict 的 key很像。
(1)建立 set 的方式是呼叫 set() 並傳入一個 list,list的元素將作為set的元素:

>>> s = set(['A', 'B', 'C'])

(2)set的特點
set的內部結構和dict很像,唯一區別是不儲存value。
set儲存的元素和dict的key類似,必須是不變物件。
(3)遍歷set 例如:

s = set(['Adam', 'Lisa', 'Bart'])
>>> for name in s:
...     print name

(4)更新set
新增元素時,用set的add()方法:
如果新增的元素已經存在於set中,add()不會報錯,但是不會加進去了:
刪除set中的元素時,用set的remove()方法:
如果刪除的元素不存在set中,remove()會報錯。
六、函式
可以直接從Python的官方網站檢視文件:
http://docs.python.org/2/library/functions.html#abs
也可以在互動式命令列通過 help(abs) 檢視abs函式的幫助資訊。
(1)編寫函式
定義一個函式要使用 def 語句,依次寫出函式名、括號、括號中的引數和冒號:,然後,在縮排塊中編寫函式體,函式的返回值用 return 語句返回。return None可以簡寫為return。Python的函式返回多值其實就是返回一個tuple。
(2)遞迴函式
例:
漢諾塔問題
函式 move(n, a, b, c) 的定義是將 n 個圓盤從 a 藉助 b 移動到 c。
參考程式碼:

def move(n, a, b, c):
    if n ==1:
        print a, '-->', c
        return
    move(n-1, a, c, b)
    print a, '-->', c
    move(n-1, b, a, c)

(3)預設引數
例如: int() 函式,其實就有兩個引數,我們既可以傳一個引數,又可以傳兩個引數:
int()函式的第二個引數是轉換進位制,如果不傳,預設是十進位制 (base=10),如果傳了,就用傳入的引數。
(4)可變引數
可變引數的名字前面有個 * 號,我們可以傳入0個、1個或多個引數給可變引數。Python直譯器會把傳入的一組引數組裝成一個tuple傳遞給可變引數。
七、對list切片
(1)['Adam', 'Lisa', 'Bart', 'Paul']
L[0:3]或L[:3]表示,從索引0開始取,直到索引3為止,但不包括索引3。所以結果為['Adam', 'Lisa', 'Bart']
L[:]表示從頭到尾,L[:]實際上覆製出了一個新list。
切片操作還可以指定第三個引數:

>>> L[::2]
['Adam', 'Bart']

第三個參數列示每N個取一個,上面的 L[::2] 會每兩個元素取出一個來,也就是隔一個取一個。
把list換成tuple,切片操作完全相同,只是切片的結果也變成了tuple。
(2)倒序切片


>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']

>>> L[-2:]
['Bart', 'Paul']

>>> L[:-2]
['Adam', 'Lisa']

>>> L[-3:-1]
['Lisa', 'Bart']

>>> L[-4:-1:2]
['Adam', 'Bart']

(3)對字串切片
字串 'xxx'和 Unicode字串 u'xxx'也可以看成是一種list,每個元素就是一個字元。因此,字串也可以用切片操作,只是操作結果仍是字串。
**注:

  1. 有序集合:list,tuple,str和unicode;
  2. 無序集合:set
  3. 無序集合並且具有 key-value 對:dict**

八、迭代

(1)索引迭代

>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> for index, name in enumerate(L):
...     print index, '-', name
... 
0 - Adam
1 - Lisa
2 - Bart
3 - Paul

enumerate() 函式自動把每個元素變成 (index, element) 這樣的tuple,再迭代,就同時獲得了索引和元素本身。
(2)迭代dict的value

  1. values() 方法實際上把一個 dict 轉換成了包含 value 的list。
  2. 但是 itervalues() 方法不會轉換,它會在迭代過程中依次從 dict 中取出 value,所以 itervalues() 方法比 values() 方法節省了生成 list 所需的記憶體。
    (3)迭代dict的key和value
    items() 方法把dict物件轉換成了包含tuple的list。
    iteritems() 不把dict轉換成list,而是在迭代過程中不斷給出 tuple,所以, iteritems() 不佔用額外的記憶體。
    九、列表
    (1)生成列表
    方法一是迴圈:
>>> L = []
>>> for x in range(1, 11):
...    L.append(x * x)
... 
>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是迴圈太繁瑣,而列表生成式則可以用一行語句代替迴圈生成上面的list:

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

(2)複雜表示式
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
在生成的表格中,對於沒有及格的同學,請把分數標記為紅色。
提示:紅色可以用 <td style="color:red"> 實現。

如果我們用一個函式來替換字串的格式化程式碼,可以得到更清晰的程式碼:

def generate_tr(name, score):
    return '<tr><td>%s</td><td>%s</td></tr>' % (name, score)
tds = [generate_tr(name, score) for name, score in d.iteritems()]

這樣,只需要修改 generate_tr() 函式,必要的時候把score標紅。

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
def generate_tr(name, score):
    if score < 60:
        return '<tr><td>%s</td><td style="color:red">%s</td></tr>' % (name, score)
    return '<tr><td>%s</td><td>%s</td></tr>' % (name, score)
tds = [generate_tr(name, score) for name, score in d.iteritems()]
print '<table border="1">'
print '<tr><th>Name</th><th>Score</th><tr>'
print '\n'.join(tds)
print '</table>'

(3)條件過濾 例如:

def toUppers(L):
return [s.upper() for s in L if isinstance(s,str) ] #isinstance(x, str) 可以判斷變數 x 是否是字串;
print toUppers(['Hello', 'world', 101]) #輸出[‘HELLO’,’WORLD’]


相關文章