Python入門筆記(二)

注:資料來源于慕課網(wǎng)Python入門
轉(zhuǎn)載請附上原文地址:http://www.reibang.com/p/54061dc018c0
上一篇筆記:Python入門筆記(一)

資料

Python官方文檔

目錄

  • 1.函數(shù)
  • 2.切片
  • 3.迭代
  • 4.列表生成式

一肥缔、函數(shù)

  • 要調(diào)用一個(gè)函數(shù)弛作,需要知道函數(shù)名稱參數(shù)
    例如調(diào)用絕對(duì)值 **abs **函數(shù):
abs(100)
abs(-20)
  • 數(shù)據(jù)類型轉(zhuǎn)換函數(shù)
int('123') # 123
str(1.23) # '1.23'
  • 定義函數(shù)
    在Python中妇菱,定義一個(gè)函數(shù)要使用** def 語句侠姑,依次寫出函數(shù)名、括號(hào)、括號(hào)中的參數(shù)和冒號(hào):,然后,在縮進(jìn)塊中編寫函數(shù)體碘箍,函數(shù)的返回值用 return **語句返回遵馆。
    例如定義一個(gè)絕對(duì)值函數(shù)
def my_abs(x): 
    if x >= 0: 
        return x  
    else: 
        return -x

請注意,函數(shù)體內(nèi)部的語句在執(zhí)行時(shí)丰榴,一旦執(zhí)行到return時(shí)货邓,函數(shù)就執(zhí)行完畢,并將結(jié)果返回四濒。因此换况,函數(shù)內(nèi)部通過條件判斷和循環(huán)可以實(shí)現(xiàn)非常復(fù)雜的邏輯。
如果沒有return語句盗蟆,函數(shù)執(zhí)行完畢后也會(huì)返回結(jié)果戈二,只是結(jié)果為 None。
return None可以簡寫為return喳资。

  • 返回值觉吭,函數(shù)可以返回多個(gè)值 例如
import math
def move(x, y, step, angle):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny

實(shí)際返回的是一個(gè)tuble,在語法上仆邓,返回一個(gè)tuple可以省略括號(hào)鲜滩,而多個(gè)變量可以同時(shí)接收一個(gè)tuple,按位置賦給對(duì)應(yīng)的值节值,所以绒北,Python的函數(shù)返回多值其實(shí)就是返回一個(gè)tuple,但寫起來更方便察署。

  • 定義參數(shù)
    • 默認(rèn)參數(shù)
      由于函數(shù)的參數(shù)按從左到右的順序匹配,所以默認(rèn)參數(shù)只能定義在必需參數(shù)的后面:
def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s
  • 可變參數(shù)
    可變參數(shù)的名字前面有個(gè) *** **號(hào)峻汉,我們可以傳入0個(gè)贴汪、1個(gè)或多個(gè)參數(shù)給可變參數(shù):
def average(*args):
    sum=0.0
    n=0
    for x in args:
        sum=sum+x
        n+=1
    if n==0:
        return 0.0
    return sum/n
print average()
print average(1, 2)
print average(1, 2, 2, 3, 4)

二、切片

  • 對(duì)list切片
    取一個(gè)list的部分元素是非常常見的操作休吠。對(duì)這種經(jīng)常取指定索引范圍的操作扳埂,用循環(huán)十分繁瑣,因此瘤礁,Python提供了切片(Slice)操作符阳懂,能大大簡化這種操作。
L[0:3]
#如果第一個(gè)索引是0柜思,還可以省略
L[:3]

切片操作還可以指定第三個(gè)參數(shù):

L[::2]

L[0:3]表示岩调,從索引0開始取,直到索引3為止赡盘,但不包括索引3号枕。即索引0,1陨享,2葱淳,正好是3個(gè)元素钝腺。
第三個(gè)參數(shù)表示每N個(gè)取一個(gè),上面的 L[::2] 會(huì)每兩個(gè)元素取出一個(gè)來赞厕,也就是隔一個(gè)取一個(gè)艳狐。
把list換成tuple,切片操作完全相同皿桑,只是切片的結(jié)果也變成了tuple毫目。

  • 字符串切片
    字符串 'xxx'和 Unicode字符串 u'xxx'也可以看成是一種list,每個(gè)元素就是一個(gè)字符唁毒。因此蒜茴,字符串也可以用切片操作,只是操作結(jié)果仍是字符串:
def firstCharUpper(s):
    first=s[0]
    rest=s[1:]
    return first.upper()+rest
print firstCharUpper('hello')
print firstCharUpper('sunday')
print firstCharUpper('september')

三浆西、迭代

在Python中粉私,迭代是通過 for ... in 來完成的,而很多語言比如C或者Java近零,迭代list是通過下標(biāo)完成的诺核,比如Java代碼:

for (i=0; i<list.length; i++) {
    n = list[i];
}

** Python 的 for循環(huán)不僅可以用在list或tuple上,還可以作用在其他任何可迭代對(duì)象上久信。**
因此窖杀,迭代操作就是對(duì)于一個(gè)集合,無論該集合是有序還是無序裙士,我們用 for 循環(huán)總是可以依次取出集合的每一個(gè)元素入客。

注意: 集合是指包含一組元素的數(shù)據(jù)結(jié)構(gòu),我們已經(jīng)介紹的包括:
1. 有序集合:list腿椎,tuple桌硫,str和unicode;
2. 無序集合:set
3. 無序集合并且具有 key-value 對(duì):dict
  • 迭代dict的value
    dict 對(duì)象有一個(gè) values() 方法啃炸,這個(gè)方法把dict轉(zhuǎn)換成一個(gè)包含所有value的list铆隘,這樣,我們迭代的就是 dict的每一個(gè) value
  1. values() 方法實(shí)際上把一個(gè) dict 轉(zhuǎn)換成了包含 value 的list南用。
  2. 但是 itervalues() 方法不會(huì)轉(zhuǎn)換膀钠,它會(huì)在迭代過程中依次從 dict 中取出 value,所以 itervalues() 方法比 values() 方法節(jié)省了生成 list 所需的內(nèi)存裹虫。
  • 迭代dict的key和value
    dict有一個(gè)items方法肿嘲,items() 方法把dict對(duì)象轉(zhuǎn)換成了包含tuple的list,我們對(duì)這個(gè)list進(jìn)行迭代筑公,可以同時(shí)獲得key和value:
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
for key, values in d.items():
    print key,':',values

和 values() 有一個(gè) itervalues() 類似睦刃, **items() **也有一個(gè)對(duì)應(yīng)的 iteritems(),iteritems() 不把dict轉(zhuǎn)換成list十酣,而是在迭代過程中不斷給出 tuple涩拙,所以际长, iteritems() 不占用額外的內(nèi)存。

四兴泥、列表生成式

  • 如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做工育?方法一是循環(huán),不給出代碼了搓彻。
    但是循環(huán)太繁瑣如绸,而列表生成式則可以用一行語句代替循環(huán)生成上面的list:
>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

寫列表生成式時(shí),把要生成的元素 x * x 放到前面旭贬,后面跟 for 循環(huán)怔接,就可以把list創(chuàng)建出來。
任務(wù)
請利用列表生成式生成列表 [1x2, 3x4, 5x6, 7x8, ..., 99x100]
提示:range(1, 100, 2) 可以生成list [1, 3, 5, 7, 9,...]

print [x*(x+1) for x in range(1,101,2)]
  • 復(fù)雜表達(dá)式
    在生成的表格中稀轨,對(duì)于沒有及格的同學(xué)扼脐,請把分?jǐn)?shù)標(biāo)記為紅色。
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(d) 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>'

字符串可以通過 % 進(jìn)行格式化奋刽,用指定的參數(shù)替代** **%s瓦侮。字符串的join()方法可以把一個(gè) list 拼接成一個(gè)字符串。
把打印出來的結(jié)果保存為一個(gè)html文件佣谐,就可以在瀏覽器中看到效果了

  • 條件過濾
    列表生成式的 for 循環(huán)后面還可以加上 if 判斷肚吏。例如:我們只想要偶數(shù)的平方,不改動(dòng) range()的情況下狭魂,可以加上 if 來篩選
[x * x for x in range(1, 11) if x % 2 == 0]

請編寫一個(gè)函數(shù)罚攀,它接受一個(gè) list,然后把list中的所有字符串變成大寫后返回雌澄,非字符串元素將被忽略坞生。

def toUppers(L):
    return [x.upper() for x in L if isinstance(x,str)]
print toUppers(['Hello', 'world', 101])
  1. isinstance(x, str) 可以判斷變量 x 是否是字符串;
  2. 字符串的 upper() 方法可以返回大寫的字母掷伙。
  • 多層表達(dá)式
    for循環(huán)可以嵌套,因此又兵,在列表生成式中任柜,也可以用多層 for 循環(huán)來生成列表。
>>> [m + n for m in 'ABC' for n in '123']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

任務(wù)
利用 3 層for循環(huán)的列表生成式沛厨,找出對(duì)稱的 3 位數(shù)宙地。例如,121 就是對(duì)稱數(shù)逆皮,因?yàn)閺挠业阶蟮惯^來還是 121宅粥。
題目要求的寫法:

print [x*100+y*10+z for x in range(1,10) for y in range(0,10) for z in range(1,10) if x==z]

簡化寫法:

print [x*100+y*10+x for x in range(1,10) for y in range(0,10)]

入門筆記記錄慕課網(wǎng)學(xué)習(xí)的Python入門

Python學(xué)習(xí)才剛剛開始

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市电谣,隨后出現(xiàn)的幾起案子秽梅,更是在濱河造成了極大的恐慌抹蚀,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件企垦,死亡現(xiàn)場離奇詭異环壤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)钞诡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門郑现,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人荧降,你說我怎么就攤上這事接箫。” “怎么了朵诫?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵辛友,是天一觀的道長。 經(jīng)常有香客問我拗窃,道長瞎领,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任随夸,我火速辦了婚禮九默,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宾毒。我一直安慰自己驼修,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布诈铛。 她就那樣靜靜地躺著驻民,像睡著了一般荠呐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天闻葵,我揣著相機(jī)與錄音,去河邊找鬼拉岁。 笑死航揉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的邑飒。 我是一名探鬼主播循签,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼疙咸!你這毒婦竟也來了县匠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎乞旦,沒想到半個(gè)月后贼穆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杆查,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年扮惦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亲桦。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡崖蜜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出客峭,到底是詐尸還是另有隱情豫领,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布舔琅,位于F島的核電站等恐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏备蚓。R本人自食惡果不足惜课蔬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望郊尝。 院中可真熱鬧二跋,春花似錦、人聲如沸流昏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽况凉。三九已至谚鄙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間刁绒,已是汗流浹背闷营。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留知市,地道東北人傻盟。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像初狰,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子互例,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • Python 是一種相當(dāng)高級(jí)的語言奢入,通過 Python 解釋器把符合語法的程序代碼轉(zhuǎn)換成 CPU 能夠執(zhí)行的機(jī)器碼...
    Python程序媛閱讀 1,891評(píng)論 0 3
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項(xiàng)目接著寫寫一名3年工作經(jīng)驗(yàn)的J...
    燕京博士閱讀 7,548評(píng)論 1 118
  • 最近在慕課網(wǎng)學(xué)習(xí)廖雪峰老師的Python進(jìn)階課程,做筆記總結(jié)一下重點(diǎn)。 基本變量及其類型 變量 在Python中腥光,...
    victorsungo閱讀 1,656評(píng)論 0 5
  • PYTHON-進(jìn)階-ITERTOOLS模塊小結(jié)轉(zhuǎn)自wklken:http://wklken.me/posts/20...
    C_Y_閱讀 953評(píng)論 0 2
  • 東野圭吾的《白夜行》是一部非常好看的小說关顷,周五點(diǎn)開看了以后,就像著了魔一樣武福,看到很晚议双,周六的一整天除了看這本書,其...
    追夢的藍(lán)閱讀 305評(píng)論 0 0