數據分析師的python日記【1】

“誰來給我講講Python?”

作爲無基礎的初學者,只想先大概瞭解一下Python,隨便編個小程序,並能看懂一般的程序,那些什麼JAVA啊、C啊、繼承啊、異常啊通通不懂怎麼辦,於是我找了很多資料,寫成下面這篇日記,希望以完全初學者的角度入手來認識Python這個在量化領域日益重要的語言。


python基本頁面、操作,以及幾種主要的容器類型。


一,熟悉基本 

在正式介紹python之前,瞭解下面兩個基本操作對後面的學習是有好處的:

1)基本的輸入輸出 可以在Python中使用+、-、*、/直接進行四則運算。

In [28]:
1+3*3
Out[28]:
10
 

(2)導入模塊 使用import可以導入模塊,導入之後,就可以使用這個模塊下面的函數了。 比如導入math模塊,然後使用math模塊下面的sqrt函數:

In [29]:
import math
math.sqrt(9)
Out[29]:
3.0
 

這時我有疑問了:

“每次引用函數的時候,math這個模塊前綴都要帶嗎?可不可以不帶?”

直接輸入sqrt(9)是會報錯的,好煩人,那麼有什麼辦法可以不用每次都帶前綴?辦法是有的,用“from 模塊 import 函數”的格式先把函數給“拿”出來。

In [30]:
from math import sqrt
sqrt(9)
Out[30]:
3.0
 

這樣每次使用sqrt函數的時候就不用再加math前綴了。當我正準備跳過的時候,又有了一個問題?

“math模塊下面有那麼多函數,可不可以寫一個語句,然後math下面所有函數都可以直接使用?”

調用了math下面的sqrt函數,寫一個from…import…,再調用下面的floor,還要寫一個,如此也挺麻煩的,有個辦法可以一下把所有函數都給“拿”出來:

In [31]:
from math import *
print sqrt(9)
print floor(32.9)
 
3.0
32.0

 

二,容器

1,什麼是容器

開始學Python時,被它的數據結構,什麼字典、序列、元組等等搞的很混亂,估計有跟我一樣的初學者,所以我梳理了一下留存: 首先要從容器說起,Python中有一種名爲容器的數據結構,顧名思義,容器,就是裝數據的器具,它主要包括序列和詞典,其中序列又主要包括列表、元組、字符串等(見下面那張圖)。

my picture

列表的基本形式比如:[1,3,6,10]或者[‘yes’,’no’,’OK’]

元組的基本形式比如:(1,3,6,10)或者(‘yes’,’no’,’OK’)

字符串的基本形式比如:’hello’

以上幾種屬於序列,序列中的每一個元素都被分配一個序號——即元素的位置,也稱爲“索引”,第一個索引,即第一個元素的位置是0,第二個是1,依次類推。列表和元組的區別主要在於,列表可以修改,而元組不能(注意列表用中括號而元組用括號)。序列的這個特點,使得我們可以利用索引來訪問序列中的某個或某幾個元素,比如:

In [32]:
a=[1,3,6,10]
a[2]
Out[32]:
6
In [33]:
b=(1,3,6,10)
b[2]
Out[33]:
6
In [34]:
c='hello'
c[0:3]
Out[34]:
'hel'
 

而與序列對應的“字典”則不一樣,它是一個無序的容器,

它的基本形式比如:d={7:'seven',8:'eight',9:'nine'}

這是一個“鍵—值”映射的結構,因此字典不能通過索引來訪問其中的元素,而要根據鍵來訪問其中的元素:

In [35]:
d={7:'seven',8:'eight',9:'nine'}
d[8]
Out[35]:
'eight'
 

2、序列的一些通用操作

除了上面說到的索引,列表、元組、字符串等這些序列還有一些共同的操作。

(1)索引(補充上面)

序列的最後一個元素的索引,也可以是-1,倒數第二個也可以用-2,依次類推:

In [36]:
a=[1,3,6,10]
print a[3]
print a[-1]
 
10
10

 

(2)分片

使用分片操作來訪問一定範圍內的元素,它的格式爲:

a[開始索引:結束索引:步長]

那麼訪問的是,從開始索引號的那個元素,到結束索引號-1的那個元素,每間隔步長個元素訪問一次,步長可以忽略,默認步長爲1。

In [37]:
c='hello'
c[0:3]
Out[37]:
'hel'
 

這個就好像把一個序列給分成幾片幾片的,所以叫做“分片”

my picture

 

(3)序列相加

即兩種序列合併在一起,兩種相同類型的序列才能相加

In [38]:
[1,2,3]+[4,5,6]
Out[38]:
[1, 2, 3, 4, 5, 6]
In [39]:
'hello,'+'world!'
Out[39]:
'hello,world!'
 

(4)成員資格

爲了檢查一個值是否在序列中,可以用in運算符

In [40]:
a='hello'
print 'o' in a
print 't' in a
 
True
False

 

3、列表操作

以上是序列共有的一些操作,列表也有一些自己獨有的操作,這是其他序列所沒有的

(1)List函數

可以通過list(序列)函數把一個序列轉換成一個列表:

In [41]:
list('hello')
Out[41]:
['h', 'e', 'l', 'l', 'o']
 

(2)元素賦值、刪除

元素刪除——del a[索引號]

元素賦值——a[索引號]=值

In [42]:
a
Out[42]:
'hello'
In [43]:
b=list(a)
b
Out[43]:
['h', 'e', 'l', 'l', 'o']
In [44]:
del b[2]
b
Out[44]:
['h', 'e', 'l', 'o']
In [45]:
b[2]='t'
b
Out[45]:
['h', 'e', 't', 'o']
 

分片賦值——a[開始索引號:結束索引號]=list(值)

爲列表的某一範圍內的元素賦值,即在開始索引號到結束索引號-1的區間幾個元素賦值,比如,利用上面語句,如何把hello變成heyyo?

In [46]:
b=list('hello')
b
Out[46]:
['h', 'e', 'l', 'l', 'o']
In [47]:
b[2:4]=list('yy')
b
Out[47]:
['h', 'e', 'y', 'y', 'o']
 

注意雖然“ll”處於“hello”這個單詞的第2、3號索引的位置,但賦值時是用b[2:4]而不是b[2:3],另外注意list()用小括號。

(3)列表方法

上面說過list函數,函數這個東西在很多語言中都有,比如excel裏面的if函數、vlookup函數,SQL裏面的count函數,以及各種語言中都有的sqrt函數等等,python中也有很多函數。 Python中的方法,是一個“與某些對象有緊密聯繫的”函數,所以列表方法,就是屬於列表的函數,它可以對列表實現一些比較深入的操作,方法這樣調用:

對象.方法(參數)

那麼列表方法的調用就理所當然是:

列表.方法(參數)

常用的列表方法這麼幾個,以a=['h','e','l','l','o']爲例:

In [48]:
a=['h','e','l','l','o']
a
Out[48]:
['h', 'e', 'l', 'l', 'o']
 

給列表a的n索引位置插入一個元素m: a.insert(n,m)

In [49]:
a.insert(2,'t')
a
Out[49]:
['h', 'e', 't', 'l', 'l', 'o']
 

給列表的最後添加元素m: a.append(m)

In [50]:
a.append('q')
a
Out[50]:
['h', 'e', 't', 'l', 'l', 'o', 'q']
 

返回a列表中,元素m第一次出現的索引位置: a.index(m)

In [51]:
a.index('e')
Out[51]:
1
 

刪除a中的第一個m元素: a.remove(m)

In [52]:
a.remove('e')
a
Out[52]:
['h', 't', 'l', 'l', 'o', 'q']
 

將列表a從大到小排列: a.sort()

In [53]:
a.sort()
a
Out[53]:
['h', 'l', 'l', 'o', 'q', 't']
 

4、字典操作

(1)dict函數

dict函數可以通過關鍵字參數來創建字典,格式爲:

dict(參數1=值1,參數2=值2, …)={參數1:值1, 參數2=值2, …}

比如,如何創建一個名字name爲jiayounet,年齡age爲28的字典?

In [54]:
dict(name='jiayounet',age=27)
Out[54]:
{'age': 27, 'name': 'jiayounet'}
 

(2)基本操作

字典的基本行爲與列表在很多地方都相似,下面的例子以序列a=[1,3,6,10],字典f={'age': 27, 'name': 'shushuo'}爲例

my picture

 

日記小結: 今天學習了Python的基本頁面、操作,以及幾種主要的容器類型,天還要學習Python的函數、循環和條件、類,然後纔算是對Python有一個大致的瞭解。

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