成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Python入門學(xué)習(xí)(七)

lmxdawn / 2005人閱讀

摘要:在熟悉了自定義函數(shù)和函數(shù)中使用到的參數(shù)必選參數(shù)默認參數(shù)可變參數(shù)關(guān)鍵字參數(shù)命名關(guān)鍵字參數(shù)以及由函數(shù)返回值引伸出的遞歸和裝飾器后讓我們繼續(xù)前行高階函數(shù)函數(shù)接收兩個參數(shù),一個是函數(shù),一個是,將傳入的函數(shù)依次作用到序列的每個元素,并把結(jié)果作為新的返

在熟悉了自定義函數(shù)和函數(shù)中使用到的參數(shù)(必選參數(shù), 默認參數(shù), 可變參數(shù), 關(guān)鍵字參數(shù), 命名關(guān)鍵字參數(shù)), 以及由函數(shù)返回值引伸出的遞歸裝飾器后, 讓我們繼續(xù)前行.

Python 高階函數(shù) map

map()函數(shù)接收兩個參數(shù),一個是函數(shù),一個是Iterable,map將傳入的函數(shù)依次作用到序列的每個元素,并把結(jié)果作為新的Iterator返回

def func(x):
    return x * x
m = map(func, [2, 3])
print(m)
for x in m:
    print(x)
map函數(shù), 就有點類似一個加工廠, func 就像是加工規(guī)則, [2, 3] 就像是加工原料, 每個原料加工后, 就成了map的返回值[4, 9]
reduce

reduce把一個函數(shù)作用在一個序列[x1, x2, x3, ...]上,這個函數(shù)必須接收兩個參數(shù),reduce把結(jié)果繼續(xù)和序列的下一個元素做累積計算

from functools import reduce
def func(x, y):
    return x + y
s = reduce(func, [1, 2, 3, 4, 5]) # 15

# s = func(func(func(func(1, 2), 3), 4), 5) # 15

reduce函數(shù), 就像是個面包機, [1, 2, 3, 4, 5] 就像是事先要準備的原料 [面粉,雞蛋, 牛奶, 糖]func, 就像是向面包機里加的動作 最后的面包機中的熱騰騰的面包, 就是返回結(jié)果了.^_^

filter

filter()把傳入的函數(shù)依次作用于每個元素,然后根據(jù)返回值是True還是False決定保留還是丟棄該元素。

def remove_ood(x):
    if x % 2 == 0:
        return True
    else:
        return False

arr = list(range(1, 10))

envn = filter(remove_ood, arr)
print(even) # 
for x in envn:
    print(x)
# 2 4 6 8

filter函數(shù) 就是把傳入集合中的元素, 按照指定規(guī)則分離. 有點像是做奶油前要從雞蛋中去出蛋黃, 留下蛋清. (^_^)

sorted

sorted()函數(shù)就可以對list進行排序

>>> sorted([36, 5, -12, 9, -21])
[-21, -12, 5, 9, 36]

sorted()函數(shù)也是一個高階函數(shù),它還可以接收一個key函數(shù)來實現(xiàn)自定義的排序,例如:

>>> sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]

其實還可以這樣玩

>>> sorted(["bob", "about", "Zoo", "Credit"], key=str.lower)
["about", "bob", "Credit", "Zoo"]

這樣 排序就忽略了數(shù)組中的字符的大小寫


>>> sorted(["bob", "about", "Zoo", "Credit"], key=str.lower, reverse=True)
["Zoo", "Credit", "bob", "about"]

數(shù)組的反轉(zhuǎn)

匿名函數(shù)

關(guān)鍵字lambda表示匿名函數(shù),冒號前面的x表示函數(shù)參數(shù)。

print(reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])) # 15

lambda: 之間是匿名函數(shù)的入?yún)?/p> 偏函數(shù)

所謂偏函數(shù),其實就是將一個已知參數(shù)和函數(shù)進行綁定,生成一個新的函數(shù)

假設(shè)要轉(zhuǎn)換大量的二進制字符串,每次都傳入int(x, base=2)非常麻煩,于是,我們想到,可以定義一個int2()的函數(shù),默認把base=2傳進去

def int2(x, base=2):
    return int(x, base)

這樣,我們轉(zhuǎn)換二進制就非常方便了:

>>> int2("1000000")
64
>>> int2("1010101")
85

functools.partial 就是幫助我們創(chuàng)建一個偏函數(shù)的,不需要我們自己定義int2(),可以直接使用下面的代碼創(chuàng)建一個新的函數(shù)int2:

>>> import functools
>>> int2 = functools.partial(int, base=2)
>>> int2("1000000")
64
>>> int2("1010101")
85
Python 高級特性 切片

切片是Python提供處理Iterable類型數(shù)據(jù)的一個工具.

>>> L = list(range(100))

# 前10個元素
>>> L[:10] # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 后10個元素
>>> L[-10:] # [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

# 前11-20個元素
>>> L[10:20] # [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

# 前10個數(shù),每兩個取一個
>>> L[:10:2] # [0, 2, 4, 6, 8]

# 倒數(shù)第3個~倒數(shù)第5個
>>> L[-5:-2][::-1] # [97, 96, 95]

>>> "ABCDEFG"[:3] # "ABC"
>>> "ABCDEFG"[::2] # "ACEG"
>>> "ABC"[::-1] # "CBA"

Iterable[起始位置=0:截至位置=len(Iterable):步長=1]

迭代

我們可以通過for循環(huán)來遍歷這個list或tuple,這種遍歷我們稱為迭代(Iteration)

d = {"a": 1, "b": 2, "c": 3}

for k in d:
    print(k) 
# a b c

for v in d.values():
    print(v)
# 1 2 3

for k, v in d.items():
    print(k, "-", v)
# a - 1 b - 2 c - 3

如何判斷一個對象是可迭代對象呢?

>>> from collections import Iterable
>>> isinstance("abc", Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整數(shù)是否可迭代
False

迭代tuple

for x, y in [(1, 1), (2, 4), (3, 9)]:
    print("{0}-{1}".format(x, y))
# 1-1 2-4 3-9
列表生成式

從一定意義上來說, 列表生成式可以做到的, 用map()函數(shù)也可以做到.但列表生成器更容易, 更直觀.

我現(xiàn)在需要一個數(shù)組2次方后的一個數(shù)組.

L = [1, 2, 3, 4, 5]
L1 = map(lambda x: x * x, L)
L2 = [x * x for x in L]
print(L1) # object.map
print(L2) #[1, 4, 9, 16, 25]

其實, 還可以這樣^_^

t = [1, 2, 3]
l = [t[i] * t[i + 1] for i in range(len(t) -1)]
print(l) # [2, 6]
生成器

在Python中,這種一邊循環(huán)一邊計算的機制,稱為generator(生成器)

g = (x * x for x in range(10))
print(g) #  at 0x1101431a8>

和列表生成式不同的是, 生成器返回的是一個Iterable, 而列表生成式返回的是一個數(shù)組

generator: 存儲的是計算規(guī)則, 并沒有真實的數(shù)據(jù). 遍歷時, 每次返回的數(shù)據(jù), 都是按照所存儲的計算規(guī)則計算出的

def odd():
    n = 1
    while True:
        yield n
        n += 2

o = odd()
print(next(o)) # 1
print(next(o)) # 3

odd不是普通函數(shù),而是generator,在執(zhí)行過程中,遇到yield就中斷,下次又繼續(xù)執(zhí)行。

最后附上一位大神用generator實現(xiàn)的楊輝三角

def triangles():
    t = [1]
    while True:
        yield t
        t= [t[i] + t[i-1] for i in range(1,len(t))]
        t.insert(0,1) # 第一位始終為 1
        t.append(1) # 最后一位始終為 1
迭代器

凡是可作用于for循環(huán)的對象都是Iterable類型;
凡是可作用于next()函數(shù)的對象都是Iterator類型,它們表示一個惰性計算的序列;
集合數(shù)據(jù)類型如list、dict、str等是Iterable, 但不是Iterator,不過可以通過iter()函數(shù)獲得一個Iterator對象。

Python 模塊

這是我項目中各文件的路徑.
我在hello.py中希望引用我web模塊下的utils中的函數(shù)

from web.utils import reverse
print(reverse("123"))

import web.utils
web.utils.welcome("Tom")

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/41248.html

相關(guān)文章

  • 零基礎(chǔ)如何學(xué)爬蟲技術(shù)

    摘要:楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),。本文來源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲軟件定制開發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類信息學(xué)術(shù)研究等。 楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),http://www.chujiangdata.com。 第一:Python爬蟲學(xué)習(xí)系列教程(來源于某博主:htt...

    KunMinX 評論0 收藏0
  • Python爬蟲學(xué)習(xí)路線

    摘要:以下這些項目,你拿來學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個步驟都能做到很優(yōu)秀的時候,你應(yīng)該考慮如何組合這四個步驟,使你的爬蟲達到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設(shè)計方案,比如說。 (一)如何學(xué)習(xí)Python 學(xué)習(xí)Python大致可以分為以下幾個階段: 1.剛上手的時候肯定是先過一遍Python最基本的知識,比如說:變量、數(shù)據(jù)結(jié)構(gòu)、語法...

    liaoyg8023 評論0 收藏0
  • python綜合學(xué)習(xí)之TensorFlow初識

    摘要:從這一節(jié)開始,將系統(tǒng)的學(xué)習(xí)這個開源包。為何要使用無可厚非地能被認定為神經(jīng)網(wǎng)絡(luò)中最好用的庫之一。它擅長的任務(wù)就是訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)。 從這一節(jié)開始,將系統(tǒng)的學(xué)習(xí)TensorFlow這個開源包。 一、TensorFlow概念 TensorFlow是Google開發(fā)的一款神經(jīng)網(wǎng)絡(luò)的Python外部的結(jié)構(gòu)包, 也是一個采用數(shù)據(jù)流圖來進行數(shù)值計算的開源軟件庫.TensorFlow 讓我們可以先繪制...

    qiangdada 評論0 收藏0
  • Python入門資料大全(更新ing)

    摘要:在線挑戰(zhàn),還沒用過,貌似現(xiàn)在對英文資料心里還有種抵觸,必須克服實驗樓研發(fā)工程師包含了等學(xué)習(xí)課程。書的作者就是開發(fā)了用于數(shù)據(jù)分析的著名開源庫的作者英文資料,對數(shù)據(jù)分析中要用到的一些庫,等等做了簡要介紹。形式的資料,示例代碼都很全。 showImg(https://segmentfault.com/img/remote/1460000004852849); 一、說明 面對網(wǎng)絡(luò)上紛繁復(fù)雜的資...

    wuaiqiu 評論0 收藏0
  • Hello World!一個計算機準大一小白的學(xué)習(xí)路徑規(guī)劃

    摘要:今天主要說一下個人情況和學(xué)習(xí)路徑規(guī)劃。個人情況作為浙江新高考最后一屆小白鼠,經(jīng)歷了許許多多手動和諧的事情,但是七選三有技術(shù)是唯一好的一件事情,讓我有了一點編程的基礎(chǔ)。 前言 Hello World!這是我思否的第一篇技術(shù)博客(不知道算不算),剛剛經(jīng)歷了高考,有個10+分的滑鐵盧,現(xiàn)坐標浙江杭州,被西南某末流211機械專業(yè)錄取。雖然被苦x的機械錄取,但還是對計算機有著幻想。以后想通...

    Fourierr 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<