《python基礎(chǔ)》~ 1

python 基礎(chǔ) :數(shù)值,鏈表每辟,字符串

很多網(wǎng)站上都有python教程,不一而足剑辫,本篇教程會結(jié)合我在實際開發(fā)過程中遇到的問題,總結(jié)出很多有意思的小tricks渠欺。我會把你當(dāng)做python小白來看待妹蔽,所以不要心急和擔(dān)心,一步步的討教一下python的招式。



數(shù)值

python是一門動態(tài)語言胳岂,它可以在運行時聲明和使用變量编整,同時它也是一種強類型的語言,這一點有別于PHP乳丰,python會提供強制類型轉(zhuǎn)換的方法掌测,與java類似,但是PHP的話編譯器會自動識別你所運用的變量到底是哪種類型产园。


注意:‘123’可以通過int()來轉(zhuǎn)化成123汞斧,但是別的非數(shù)字字符串就不可

更準(zhǔn)確來說,它也滿足遇強則強的類型強制轉(zhuǎn)換規(guī)則什燕,最明顯的就是在兩個數(shù)相除的時候粘勒。

同時python也是支持復(fù)數(shù)運算的一門語言,虛部由一個后綴"j"或者"J"來表示屎即。帶有非零實部的復(fù)數(shù)記為"real+imagj"庙睡,或者通過complex(real, img)函數(shù)創(chuàng)建。記得以前c++中最經(jīng)典的一些題目就是重載+運算符剑勾,使其可以支持復(fù)數(shù)運算埃撵。來看幾個例子:

>>> 1j * 1J
(-1+0j)
>>> 1j * complex(0,1)
(-1+0j)
>>> 3+1j*3
(3+3j)
>>> (3+1j)*3
(9+3j)
>>> (1+2j)/(1+1j)
(1.5+0.5j)

假設(shè)復(fù)數(shù)為z赵颅,那么它的實部就為z.real 虛部就為z.imag

>>> a=1.5+0.5j
>>> a.real
1.5
>>> a.imag
0.5

注意


不能將復(fù)數(shù)轉(zhuǎn)化成常用的變量類型虽另。你可以用abs函數(shù)取模。



trick:

在shell交互模式下饺谬,最近一次的計算結(jié)果保存在變量_(下劃線)中捂刺,這樣就可以很方便的進行運算操作。

字符串

python里面有一個string的module募寨,我們先從最基本的開始講起族展。
想必你對轉(zhuǎn)義字符并不陌生,在python中也保留了這一轉(zhuǎn)義傳統(tǒng)拔鹰,加入你在字符后面打上\仪缸,說明接下來的字符串是\之前的邏輯后綴:

>>>hello = "This is a rather long string containing\n   \several lines of text just as you would do in C.\n\
Note that whitespace at the beginning of the line is
\significant."

print hello

將得到

This is a rather long string containing
several lines of text just as you would do in C.
    Note that whitespace at the beginning of the line   is significant.

那么很明顯,‘\n’就是我們熟悉的換行列肢,\是邏輯繼續(xù)符號恰画。具體的輸出格式你需要根據(jù)自己的shell跑跑看。

trick:

如果我們創(chuàng)建一個“行”("raw")字符串瓷马,\ n序列就不會轉(zhuǎn)為換行拴还,源碼中的反斜杠和換行符n都會做為字符串中的數(shù)據(jù)處理

hello = r"This is a rather long string containing\n\
several lines of text much as you would do in C."

print hello

你將得到:

This is a rather long string containing\n\
several lines of text much as you would do in C.

但是:

r allow \t to be interpreted as the two characters \ and t
也就是說:r‘\t’得到的是\\t

如果你還是嫌太麻煩,那么就用三引號(""")來包裹字符串欧聘,這樣的話兩個三引號之間不需要進行行尾換行處理片林。


同時,就像你想的那樣,字符串可以相加可以乘以一個數(shù)字進行成倍的復(fù)制费封,更令人吃驚的時兩個字符串的值可以自動的粘黏在一起:

>>>'str''ing'
>>>'string'

但是這個功能僅僅針對字符串常量焕妙。






接下來要講到的一個字符串的功能跟python中的數(shù)組有莫大的關(guān)聯(lián),其實這句話是廢話孝偎,一般而言字符串也不過就是一個儲存在內(nèi)存中的字符數(shù)組访敌,但是我這句話的本意是想表達(dá),python的數(shù)組衣盾,更嚴(yán)格來講是list寺旺,有一個很強大的功能,那就是切片势决。

初學(xué)者可能還無法領(lǐng)會切片使用的奧義阻塑,那么我們來舉幾個例子你就能體會為什么這個功能是很多人選擇python的理由。

+---+---+---+---+---+
| H | e | l | p | A |
+---+---+---+---+---+
0   1   2   3   4   5
-5  -4  -3  -2  -1
上圖展示了python列表下標(biāo)的情況果复,python的list可以進行負(fù)索引操作:
>>> word[-1]     # The last character
'A'
>>> word[-2]     # The last-but-one character
'p'
>>> word[-2:]    # The last two characters
'pA'
>>> word[:-2]    # Everything except the last two 
'Hel'


切片操作有一個很有用的不變性:
>>> word[:2] + word[2:]
'HelpA'
>>> word[:3] + word[3:]
'HelpA'

所以現(xiàn)在你回頭看看你以前熟悉的那些硬語言陈莽,沒有哪一種是可以像這樣操作數(shù)組或者列表的,這樣就給數(shù)據(jù)結(jié)構(gòu)和算法提供的莫大的方便虽抄。鏈表的操作跟上述的操作道理是一樣的走搁。這里不贅述了。



下面我們來看看string module

在介紹python中的核心概念module之前迈窟,相比你們都嘗試過import這個功能私植,沒錯,python的強大之處就在于它的第三方包车酣,這些包在python簡潔的基礎(chǔ)之上又進行了整理曲稼,使得語法更加的簡單明了,更加地人性化湖员。這里我們以string這個module為例子贫悄,介紹一下有關(guān)module的使用,希望大家可以舉一反三娘摔。



無論對于哪一種語言來講窄坦,字符串的操作是重中之重,為此大部分語言都將其作為一個單獨的類或者包列出來凳寺,提供對字符串操作的方法鸭津。python也不例外。

首先打開你的終端(linux用戶读第,windows就cmd吧)曙博,分別輸入以下命令:
1 python
2 import stirng
3 dir(string)
會出現(xiàn)以下一大坨:

['Formatter', 'Template', '_TemplateMetaclass', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_float', '_idmap', '_idmapL', '_int', '_long', '_multimap', '_re', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'atof', 'atof_error', 'atoi', 'atoi_error', 'atol', 'atol_error', 'capitalize', 'capwords', 'center', 'count', 'digits', 'expandtabs', 'find', 'hexdigits', 'index', 'index_error', 'join', 'joinfields', 'letters', 'ljust', 'lower', 'lowercase', 'lstrip', 'maketrans', 'octdigits', 'printable', 'punctuation', 'replace', 'rfind', 'rindex', 'rjust', 'rsplit', 'rstrip', 'split', 'splitfields', 'strip', 'swapcase', 'translate', 'upper', 'uppercase', 'whitespace', 'zfill']  

這些就是string這個module里面所包含的默認(rèn)屬性以及方法(屬于類以級別,可按照java中的類方法理解)怜瞒,那些奇奇怪怪的下劃線看不懂不要緊父泳,下一篇文章我會解釋般哼。如果想知道其中某個函數(shù)比如find的用法,請在終端這么做:help(string.find)惠窄,那么就會出現(xiàn):

Help on function find in module string:

find(s, *args)
    find(s, sub [,start [,end]]) -> in

Return the lowest index in s where substring sub is found,
such that sub is contained within s[start,end].  Optional
arguments start and end are interpreted as in slice notation.

Return -1 on failure.
(END) 

它會給你一個抽象方法和一個具體方法蒸眠,如上,星號看不懂也沒有關(guān)系杆融,下章會講楞卡,僅僅先當(dāng)做參數(shù)。

注意: 
在終端中脾歇,(END)是高亮的蒋腮,你閱讀完了以后,直接按'q'藕各,就會返回到>>>提示符池摧,可以繼續(xù)操作。不然這個既不想vim也不像emacs的東西會搞得你頭大激况。  

那么string中常見的幾個函數(shù)用法給大家列一下作彤,具體情況具體help

string.atof(s)# Convert to float  
string.atoi(s)# Convert to integer
string.atol(s)# Convert to long
string.count(s,pattern)# Count occurrences of pattern in s
string.find(s,pattern)# Find pattern in s
string.split(s, sep)# String a string
string.join(strlist, sep)  # Join a list of string
string.replace(s,old,new)  # Replace occurrences of old with new

高度預(yù)警:
函數(shù)'atoi'可以把string類型變量轉(zhuǎn)化為int類型變量,但是僅限于轉(zhuǎn)數(shù)字字符串類型

s='string'
s=string.atoi(s)#錯誤
s = '123'
s=string.atoi(s)#正確

那么第一章就以string module結(jié)尾乌逐。
未完待續(xù)竭讳,求打臉,求評論浙踢,求口水绢慢。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市成黄,隨后出現(xiàn)的幾起案子呐芥,更是在濱河造成了極大的恐慌逻杖,老刑警劉巖奋岁,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異荸百,居然都是意外死亡闻伶,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門够话,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蓝翰,“玉大人,你說我怎么就攤上這事女嘲⌒蠓荩” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵欣尼,是天一觀的道長爆雹。 經(jīng)常有香客問我停蕉,道長,這世上最難降的妖魔是什么钙态? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任慧起,我火速辦了婚禮,結(jié)果婚禮上册倒,老公的妹妹穿的比我還像新娘蚓挤。我一直安慰自己,他們只是感情好驻子,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布灿意。 她就那樣靜靜地躺著,像睡著了一般崇呵。 火紅的嫁衣襯著肌膚如雪脾歧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天演熟,我揣著相機與錄音鞭执,去河邊找鬼。 笑死芒粹,一個胖子當(dāng)著我的面吹牛兄纺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播化漆,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼估脆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了座云?” 一聲冷哼從身側(cè)響起疙赠,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎朦拖,沒想到半個月后圃阳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡璧帝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年捍岳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睬隶。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡锣夹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出苏潜,到底是詐尸還是另有隱情银萍,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布恤左,位于F島的核電站贴唇,受9級特大地震影響贰锁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜滤蝠,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一豌熄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧物咳,春花似錦锣险、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至压鉴,卻和暖如春崖咨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背油吭。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工击蹲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人婉宰。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓歌豺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親心包。 傳聞我的和親對象是個殘疾皇子类咧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

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

  • 本節(jié)內(nèi)容 Python介紹 發(fā)展史 Python 2 or 3? 安裝 Hello World程序 變量 用戶輸入...
    小小不懂11閱讀 3,406評論 2 30
  • 本教程基于Python 3,參考 A Byte of Python v1.92(for Python 3.0) 以...
    yuhuan121閱讀 3,040評論 1 6
  • 前言 ||| 第二章 使用ArcPy編寫腳本 Python支持大部分在其他語言中出現(xiàn)的編程結(jié)構(gòu)蟹腾。在本章內(nèi)容中痕惋,我們...
    muyan閱讀 89,949評論 10 55
  • 看到幾位學(xué)員成長視頻的親身感悟,沒學(xué)之前幾乎跟客戶談的是產(chǎn)品如何好娃殖,公司如何好值戳,通過上鄭老師幾節(jié)課后深深體...
    九彩陽光閱讀 262評論 0 0
  • 都這么晚了,我其實就是想跟你說珊随,原來沒什么是絕對不可原諒的述寡,如果你的心還會疼柿隙,那就原諒他吧叶洞,別跟自個兒過不去了。 ...
    京城兒閱讀 187評論 0 0