<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

干貨:一些Python有用的小技巧,離精通更進一步

如意 ? 來源:讀芯術 ? 作者:讀芯術 ? 2020-07-05 10:25 ? 次閱讀

Python看起來似乎是一種任何人都可以學習的簡單語言,但實際上,學會不等于精通,Python的“后勁兒”超乎我們的想象,它容易入門卻很難掌握。在Python中,一個通常有多種處理方法,但很容易出錯的地方很多;或者僅僅因為不知道模塊的存在,你就得重新創建標準庫,這很浪費時間。

Python標準庫是一個巨大的野獸,它的生態系統絕對是龐大的。雖然Python模塊可能有200萬千兆字節,好在有一些使用技巧存在,我們可以用Python中與科學計算相關的標準庫和包來學習。

1.反轉字符串

雖然看似是很基礎的操作,但是用char循環來反轉字符串可能會非常繁瑣麻煩。幸運的是,Python包含了一個簡單的內置操作來準確地執行這個任務,我們只需訪問字符串上的索引::-1。

a = “!dlrow olleH”

backward = a[::-1]

干貨:一些Python有用的小技巧,離精通更進一步

2.Dims作為變量

在大多數語言中,為了將數組放入一組變量中需迭代循環值,或按位置訪問暗點,如下所示:

firstdim = array[1]

然而,在Python中有一種更好更快的方法。為了將一列值改為變量,可以簡單地將變量名設置為與數組長度相同的數組:

array = [5, 10, 15, 20]

five, ten, fift, twent = array

干貨:一些Python有用的小技巧,離精通更進一步

3.生成器的next()迭代

編程中的大多數正常情況下,可以訪問一個索引,并使用計數器獲取位置數字,計數器將只是一個值,添加到:

array1 = [5, 10, 15, 20]

array2 = (x ** 2 for x in range(10))

counter = 0for i in array1:# This code wouldn‘t work because ’i‘ is not in array2.

# i = array2[i]

i = array2[counter]

# ^^^ This code would because we areaccessing the position of i

我們也可以用next()代替它。Next使用一個迭代器,該迭代器將當前位置存儲在內存中,并在后臺迭代列表:

g = (x ** 2 for x in range(10))

print(next(g))

print(next(g))

4.智能拆包

迭代地解壓值可能會非常耗費時力,Python中有幾種不錯的方法可以用來解壓列表的方法。其中一個是*,它將填充未分配的值并將它們添加到變量名下的新列表中。

a, *b, c = [1, 2, 3, 4, 5]

干貨:一些Python有用的小技巧,離精通更進一步

5.列舉

不了解列舉那可不太行。列舉可以獲取列表中某些值的索引,在數據科學中使用數組而不是數據幀時,這就特別有用:

for i,w in enumerate(array):

print(i,w)

干貨:一些Python有用的小技巧,離精通更進一步

6.命名切片

Python中,分割列表非常簡單,各式各樣優秀工具都能做到。特別好的一點是,它還能夠給列表命名,這對于Python中的線性代數特別有用:

a = [0, 1, 2, 3, 4, 5]

LASTTHREE = slice(-3, None)

slice(-3, None, None)

print(a[LASTTHREE])

干貨:一些Python有用的小技巧,離精通更進一步

7.Itertools

如果深入學習Python,那你肯定要熟悉itertools。itertools是標準庫中的一個模塊,它可以不斷地解決迭代問題。它不僅使編寫復雜循環大幅度變容易,而且還使代碼更簡潔快速。有數百種Itertools的使用示例,來看看其中一個:

c = [[1, 2], [3, 4], [5, 6]]

# Let’s convert this matrix to a 1 dimensional list.

import itertools as it

newlist = list(it.chain.from_iterable(c))

8.分組相鄰列表

在for循環中,對相鄰循環進行分組當然很容易,特別是使用zip(),但這肯定不是最好的方法。為了更輕松便捷地實現這一點,可以用zip編寫一個lambda表達式,該表達式將對相鄰列表進行分組,如下所示:

a = [1, 2, 3, 4, 5, 6]

group_adjacent = lambda a, k: zip(*([iter(a)] * k))

group_adjacent(a, 3) [(1, 2, 3), (4, 5, 6)]

group_adjacent(a, 2) [(1, 2), (3, 4), (5, 6)]

group_adjacent(a, 1)

干貨:一些Python有用的小技巧,離精通更進一步

9.計數器

集合也是模塊中很好的標準庫,這里向大家介紹的是集合中的計數器。使用計數器,可以輕松獲得一個列表的計數。這對于獲取數據中的值總數、數據的空計數,以及查看數據的唯一值非常有用。

“為什么不直接使用Pandas呢?”使用Pandas來實現這一點無疑會困難得多,而且這只是在部署算法時需要添加到虛擬環境中的另一個依賴項。另外,Python中的計數器類型有很多Pandas系列沒有的特性,這使其在某些情況下更有用。

A = collections.Counter([1, 1, 2,2, 3, 3, 3, 3, 4, 5, 6, 7])

A Counter({3: 4, 1: 2, 2: 2, 4: 1, 5: 1, 6: 1, 7: 1})

A.most_common(1) [(3, 4)]

A.most_common(3) [(3, 4), (1, 2), (2, 2)]

10.出隊

如下所示,出隊能讓代碼非常整潔:

import collections

Q = collections.deque()

Q.append(1)

Q.appendleft(2)

Q.extend([3, 4])

Q.extendleft([5, 6])

Q.pop()

Q.popleft()

Q.rotate(3)

Q.rotate(-3)

print(Q)

干貨:一些Python有用的小技巧,離精通更進一步

這些是筆者一直愛用的Python技巧,都非常通用和實用,實踐中總有機會能用到。Python的標準庫函數工具箱變得越來越多樣,還有很多筆者也沒聽說過的工具。學無止境,這多么令人興奮!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 字符串
    +關注

    關注

    1

    文章

    553

    瀏覽量

    20266
  • python
    +關注

    關注

    53

    文章

    4700

    瀏覽量

    83647
  • 標準庫
    +關注

    關注

    0

    文章

    29

    瀏覽量

    7359
收藏 人收藏

    評論

    相關推薦

    有什么方法可以進一步提高AD7714的分辨率???

    級放大再加給AD7714時,測得人分辨率還要低一些。由于是用干電池得到AD7714的輸入信號,該信號相對來說很穩定,而且板上的噪聲也不是太大。請問各位大蝦,還有什么方法可以進一步提高AD7714的分辨率???不勝感激!
    發表于 12-25 06:33

    【單片機開發300問】怎樣進一步降低功耗

    【單片機開發300問】怎樣進一步降低功耗功耗,在電池供電的儀器儀表中是個重要的考慮因素。PIC16C××系列單片機本身的功耗較低(在5V,4MHz振蕩頻率時工作電流小于2mA)。為進一步降低
    發表于 12-07 13:59

    【OK210申請】嵌入式進一步學習(想試著做個簡單的平板玩玩)

    借這個機會,申請這塊開發版,便于日常學習,而且我即將大四了,希望用這塊開發版能更進一步的學習,則方便之后的課設,二則便于找工作,三則嵌入式也是自己敢興趣。衷心希望能獲得這次機會,謝謝。項目描述:之前
    發表于 06-24 17:06

    E4406A達到adc對齊時不會更進一步

    你好E4406A有問題----當我啟動時 - 設備按我的意愿啟動自動對齊,但是當它達到adc對齊時它不會更進一步。根本沒有消息??梢杂胊bort終止它,并且分析儀似乎正常工作---- ??我可以用
    發表于 12-28 16:06

    進一步理解量子力學經典 多方面豐富相關圖表

    進一步理解量子力學經典理論與應用 多方面豐富相關圖表為了進一步深入理解量子力學理論經典及其應用,從多個方面豐富內容,附圖頁碼致,符合國際標準。聲學,聲波自然現象,以及經典原子理論的應用等對理解量子力學經典之波的概念有益。大灣區
    發表于 08-02 07:05

    如何讓計算機視覺更進一步接近人類視覺?

    如何讓計算機視覺更進一步接近人類視覺?
    發表于 06-01 06:27

    進一步提高UPS電源的可靠性

    及設備用電安全的需要,更進一步提高電源的可靠性,及時發現供電隱患,提高設備的運行壽命,對電源進行在線管理已經成為普遍的需求。針對早期的UPS電源的RS232標準,已經無法滿足目前計算機硬件及軟件技...
    發表于 12-28 08:05

    如何進一步提高1302精度?

    GN1302 晶振引腳連接 2 個 30pf 電容,每天大約慢 4 秒,如何進一步提高精度?時鐘每天慢 4 秒是因為晶振的外部負載電容過大,即 30pf 電容過大。如果使用的晶振的負載電容參數為
    發表于 12-29 17:36

    請問如何進一步減小DTC控制系統的轉矩脈動?

    如何進一步減小DTC控制系統的轉矩脈動?
    發表于 10-18 06:53

    天齊鋰業年產2萬噸碳酸鋰工廠項目的實施 離2020年實現10萬噸目標更進一步

    本次年產2萬噸碳酸鋰工廠項目的實施,將讓天齊鋰業離2020年實現10萬噸鋰化工產品產能目標更進一步。
    的頭像 發表于 01-05 09:18 ?6280次閱讀

    如何從工業4.0更進一步轉向工業5.0?

    工業4.0能帶來自動化和前所未有的生產力水平,許多公司現已采用物聯網(IoT)、人工智能(AI)、大數據、云端運算及先進機器人等技術。然而,許多處于技術前沿的公司已更進一步轉向工業5.0。
    發表于 07-09 09:18 ?1218次閱讀

    縮短交互路徑 智能家居產品或者全屋智能的體驗將更進一步

    通過模組把多種傳感、碎片數據、AI算法和自控技術深度結合,或許能讓智能家居產品或者全屋智能的體驗更進一步。
    發表于 04-24 15:16 ?881次閱讀

    智能家居交互方向或是無感化 全屋智能的體驗將更進一步

    通過模組把多種傳感、碎片數據、AI算法和自控技術深度結合,或許能讓智能家居產品或者全屋智能的體驗更進一步。
    發表于 04-26 08:48 ?1255次閱讀

    華為推出新功能,鴻蒙系統將更進一步

    近日,華為推出新功能,鴻蒙OS更進一步。我們都知道,鴻蒙OS已經發布一段時間了,近日華為升級了一項新功能,這也意味著鴻蒙OS更近一步。
    的頭像 發表于 10-31 16:54 ?3706次閱讀

    【轉載】更進一步的了解Keil Flash的下載算法

    【轉載】更進一步的了解Keil Flash的下載算法
    發表于 11-26 16:36 ?1次下載
    【轉載】<b class='flag-5'>更進一步</b>的了解Keil Flash的下載算法
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>