Python學習筆記-第四天

常規(guī)導入

** import sys **
你只需要使用import一詞,然后指定你希望導入的模塊或包即可誊酌。通過這種方式導入的好處是可以一次性導入多個包或模塊:

** import os, sys, time **
雖然這節(jié)省了空間,但是卻違背了Python風格指南观话。Python風格指南建議將每個導入語句單獨成行荞怒。

使用from語句導入

很多時候你只想要導入一個模塊或庫中的某個部分。我們來看看在Python中如何實現(xiàn)這點:

** from functools import lru_cache **
上面這行代碼可以讓你直接調(diào)用lru_cache拼余。如果你按常規(guī)方式導入functools,那么你就必須像這樣調(diào)用lru_cache:

** functools.lru_cache(*args) **
根據(jù)你實際的使用場景亩歹,上面的做法可能是更好的匙监。在復雜的代碼庫中,能夠看出某個函數(shù)是從哪里導入的這點很有用的小作。不過亭姥,如果你的代碼維護的很好,模塊化程度高顾稀,那么只從某個模塊中導入一部分內(nèi)容也是非常方便和簡潔的达罗。

當然,你還可以使用from方法導入模塊的全部內(nèi)容,就像這樣:

** from os import * **

** 切片 **
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# list 切片
L = ['chen', 'li', 'jiang', 'wen']
print L[0:4]
print L[:3]
print L[-2:]

L = range(100)
print L[:10]
print L[-10:]

# copy list
N = L[:]
print N

# tuple 切片
L = (1, 2, 3, 4, 5)
print L[0:3]

# 字符串切片
L = 'chenwenbo'
print L[0:3]
# 間隔三個
print L[::3]
# 間隔二個
print L[::2]
** 迭代 **
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from collections import Iterable

# 迭代dict
dict = {'name': 'chenwenbo', 'age': 12}
# key
for o in dict:
    print o

# value
for o in dict.itervalues():
    print o

# item
for x, y in dict.iteritems():
    print x
    print y

# str
for str in "chenwenbo":
    print str

# 判斷對象是否可以迭代
print isinstance('chenwen', Iterable)

# Python內(nèi)置的enumerate函數(shù)可以把一個list變成索引-元素對粮揉,這樣就可以在for循環(huán)中同時迭代索引和元素本身
for i, value in enumerate('chenwenbo'):
    print i, value

# 引用兩個變量
for x, y in [(1, 2), (2, 3), (3, 4)]:
    print x, y
** 列表生成式 **
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 列表生成式即List Comprehensions巡李,是Python內(nèi)置的非常簡單卻強大的可以用來創(chuàng)建list的生成式。

print [x for x in range(1, 22) if x % 2 == 0]
print [x*x for x in range(1, 22) if x % 2 == 0]
print [x.lower() for x in 'ABC']

# 多個返回值的列表生成式
d = {'x': 'A', 'y': 'B'}
print [x+y for x, y in d.iteritems()]
** 生成器 ** 
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 列表生成式 []
L = [x*x for x in range(0, 10)]
print L
# 生成器 ()
g = (x*x for x in range(0, 10))
print g.next()
print g.next()
print g.next()
print g.next()
for x in g:
    print x


# 自定義生成器
def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        # 關(guān)鍵
        yield b
        a, b = b, a + b
        n = n + 1

for f in fib(6):
    print f

# generator是非常強大的工具扶认,在Python中侨拦,可以簡單地把列表生成式改成generator,也可以通過函數(shù)實現(xiàn)復雜邏輯的generator辐宾。
# 要理解generator的工作原理狱从,它是在for循環(huán)的過程中不斷計算出下一個元素,并在適當?shù)臈l件結(jié)束for循環(huán)叠纹。對于函數(shù)改成的generator來說季研,遇到return語句或者執(zhí)行到函數(shù)體最后一行語句,就是結(jié)束generator的指令吊洼,for循環(huán)隨之結(jié)束训貌。
** filter **
#!/usr/bin/env python
# -*- coding: utf-8 -*-

print filter(lambda x: x > 10, [1, 2, 4, 5, 6, 9, 10, 15])

# 把一個序列中的空字符串刪掉制肮,可以這么寫:
print filter(lambda x: (x and x.strip()), ['A', '', 'B', None, 'C', '  '])
** 高階函數(shù) **
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 高階函數(shù)
# 變量可以指向函數(shù)
f = abs
print f(-10)

# 函數(shù)名也是變量
cmp = 10
print cmp
# 報錯 print abs(-10)


# 參數(shù)傳入函數(shù)
def add(x, y, f):
    return f(x) + f(y)

print add(1, 2, abs)
** map **
#!/usr/bin/env python
# -*- coding: utf-8 -*-


# map usage
def f(num):
    return num * num


print map(f, [1, 2, 3, 4, 5])
print map(lambda x: x * x, [1, 2, 3, 4, 5])
** reduce **
#!/usr/bin/env python
# -*- coding: utf-8 -*-


# reduce usage
def char2num(str):
    return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[str]


def str2int(s):
    return reduce(lambda x, y: x + y, map(char2num, s))
print str2int('123')
** sorted **
#!/usr/bin/env python
# -*- coding: utf-8 -*-

print sorted([22, 3, 51, 1, 521, 50, 134])


def new_sort(x, y):
    if x > y:
        return -1
    if x < y:
        return 1
    return 0


print sorted([22, 3, 51, 1, 521, 50, 134], new_sort)

切片
迭代
列表生成式
生成器

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冒窍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子豺鼻,更是在濱河造成了極大的恐慌综液,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,686評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件儒飒,死亡現(xiàn)場離奇詭異谬莹,居然都是意外死亡,警方通過查閱死者的電腦和手機桩了,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評論 3 385
  • 文/潘曉璐 我一進店門附帽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人井誉,你說我怎么就攤上這事蕉扮。” “怎么了颗圣?”我有些...
    開封第一講書人閱讀 158,160評論 0 348
  • 文/不壞的土叔 我叫張陵喳钟,是天一觀的道長。 經(jīng)常有香客問我在岂,道長奔则,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,736評論 1 284
  • 正文 為了忘掉前任蔽午,我火速辦了婚禮易茬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘及老。我一直安慰自己疾呻,他們只是感情好除嘹,可當我...
    茶點故事閱讀 65,847評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岸蜗,像睡著了一般尉咕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上璃岳,一...
    開封第一講書人閱讀 50,043評論 1 291
  • 那天年缎,我揣著相機與錄音,去河邊找鬼铃慷。 笑死单芜,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的犁柜。 我是一名探鬼主播洲鸠,決...
    沈念sama閱讀 39,129評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼馋缅!你這毒婦竟也來了扒腕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,872評論 0 268
  • 序言:老撾萬榮一對情侶失蹤萤悴,失蹤者是張志新(化名)和其女友劉穎瘾腰,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體覆履,經(jīng)...
    沈念sama閱讀 44,318評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蹋盆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,645評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了硝全。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片栖雾。...
    茶點故事閱讀 38,777評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖伟众,靈堂內(nèi)的尸體忽然破棺而出析藕,到底是詐尸還是另有隱情,我是刑警寧澤赂鲤,帶...
    沈念sama閱讀 34,470評論 4 333
  • 正文 年R本政府宣布噪径,位于F島的核電站,受9級特大地震影響数初,放射性物質(zhì)發(fā)生泄漏找爱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,126評論 3 317
  • 文/蒙蒙 一泡孩、第九天 我趴在偏房一處隱蔽的房頂上張望车摄。 院中可真熱鬧,春花似錦、人聲如沸吮播。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,861評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽意狠。三九已至粟关,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間环戈,已是汗流浹背闷板。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留院塞,地道東北人遮晚。 一個月前我還...
    沈念sama閱讀 46,589評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像拦止,于是被迫代替她去往敵國和親县遣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,687評論 2 351

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

  • 運算符 Python支持以下類型的運算符: 算術(shù)運算符 比較(關(guān)系)運算符 賦值運算符 邏輯運算符 位運算符 成員...
    Jaesoon閱讀 145評論 0 0
  • 用 python 解釋器來編程從 Python 解釋器退出再進入汹族,那么你定義的所有的方法和變量就都消失了萧求。 為此...
    chen_000閱讀 521評論 0 3
  • 今天的路線,從江西溝到黑馬河鞠抑,全程57KM饭聚。一大早大釗和領隊就回到了前一天晚上停下放車的地方忌警。大釗要把剩下的27公...
    JeremyWu閱讀 212評論 0 0
  • 馬上2016年就要過完了搁拙,迎接新的一年。2016年計劃很籠統(tǒng)法绵,沒有具體量化』伲現(xiàn)在來定2017年的新年計劃。 學習成...
    風鈴雜記閱讀 250評論 3 4
  • 1朋譬、虎式熱身盐茎,開合跳,波比 2徙赢、臥推 20-22.5-25字柠,各5個 30,5*5 組間1kg側(cè)平舉 3狡赐、坐姿劃船1...
    JanePlus閱讀 149評論 0 0