吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

干貨:一些Python有用的小技巧,離精通更進(jìn)一步

如意 ? 來(lái)源:讀芯術(shù) ? 作者:讀芯術(shù) ? 2020-07-05 10:25 ? 次閱讀

Python看起來(lái)似乎是一種任何人都可以學(xué)習(xí)的簡(jiǎn)單語(yǔ)言,但實(shí)際上,學(xué)會(huì)不等于精通,Python的“后勁兒”超乎我們的想象,它容易入門卻很難掌握。在Python中,一個(gè)通常有多種處理方法,但很容易出錯(cuò)的地方很多;或者僅僅因?yàn)椴恢滥K的存在,你就得重新創(chuàng)建標(biāo)準(zhǔn)庫(kù),這很浪費(fèi)時(shí)間。

Python標(biāo)準(zhǔn)庫(kù)是一個(gè)巨大的野獸,它的生態(tài)系統(tǒng)絕對(duì)是龐大的。雖然Python模塊可能有200萬(wàn)千兆字節(jié),好在有一些使用技巧存在,我們可以用Python中與科學(xué)計(jì)算相關(guān)的標(biāo)準(zhǔn)庫(kù)和包來(lái)學(xué)習(xí)。

1.反轉(zhuǎn)字符串

雖然看似是很基礎(chǔ)的操作,但是用char循環(huán)來(lái)反轉(zhuǎn)字符串可能會(huì)非常繁瑣麻煩。幸運(yùn)的是,Python包含了一個(gè)簡(jiǎn)單的內(nèi)置操作來(lái)準(zhǔn)確地執(zhí)行這個(gè)任務(wù),我們只需訪問(wèn)字符串上的索引::-1。

a = “!dlrow olleH”

backward = a[::-1]

干貨:一些Python有用的小技巧,離精通更進(jìn)一步

2.Dims作為變量

在大多數(shù)語(yǔ)言中,為了將數(shù)組放入一組變量中需迭代循環(huán)值,或按位置訪問(wèn)暗點(diǎn),如下所示:

firstdim = array[1]

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

array = [5, 10, 15, 20]

five, ten, fift, twent = array

干貨:一些Python有用的小技巧,離精通更進(jìn)一步

3.生成器的next()迭代

編程中的大多數(shù)正常情況下,可以訪問(wèn)一個(gè)索引,并使用計(jì)數(shù)器獲取位置數(shù)字,計(jì)數(shù)器將只是一個(gè)值,添加到:

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è)迭代器,該迭代器將當(dāng)前位置存儲(chǔ)在內(nèi)存中,并在后臺(tái)迭代列表:

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

print(next(g))

print(next(g))

4.智能拆包

迭代地解壓值可能會(huì)非常耗費(fèi)時(shí)力,Python中有幾種不錯(cuò)的方法可以用來(lái)解壓列表的方法。其中一個(gè)是*,它將填充未分配的值并將它們添加到變量名下的新列表中。

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

干貨:一些Python有用的小技巧,離精通更進(jìn)一步

5.列舉

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

for i,w in enumerate(array):

print(i,w)

干貨:一些Python有用的小技巧,離精通更進(jìn)一步

6.命名切片

Python中,分割列表非常簡(jiǎn)單,各式各樣優(yōu)秀工具都能做到。特別好的一點(diǎn)是,它還能夠給列表命名,這對(duì)于Python中的線性代數(shù)特別有用:

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

LASTTHREE = slice(-3, None)

slice(-3, None, None)

print(a[LASTTHREE])

干貨:一些Python有用的小技巧,離精通更進(jìn)一步

7.Itertools

如果深入學(xué)習(xí)Python,那你肯定要熟悉itertools。itertools是標(biāo)準(zhǔn)庫(kù)中的一個(gè)模塊,它可以不斷地解決迭代問(wèn)題。它不僅使編寫復(fù)雜循環(huán)大幅度變?nèi)菀?,而且還使代碼更簡(jiǎn)潔快速。有數(shù)百種Itertools的使用示例,來(lái)看看其中一個(gè):

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循環(huán)中,對(duì)相鄰循環(huán)進(jìn)行分組當(dāng)然很容易,特別是使用zip(),但這肯定不是最好的方法。為了更輕松便捷地實(shí)現(xiàn)這一點(diǎn),可以用zip編寫一個(gè)lambda表達(dá)式,該表達(dá)式將對(duì)相鄰列表進(jìn)行分組,如下所示:

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有用的小技巧,離精通更進(jìn)一步

9.計(jì)數(shù)器

集合也是模塊中很好的標(biāo)準(zhǔn)庫(kù),這里向大家介紹的是集合中的計(jì)數(shù)器。使用計(jì)數(shù)器,可以輕松獲得一個(gè)列表的計(jì)數(shù)。這對(duì)于獲取數(shù)據(jù)中的值總數(shù)、數(shù)據(jù)的空計(jì)數(shù),以及查看數(shù)據(jù)的唯一值非常有用。

“為什么不直接使用Pandas呢?”使用Pandas來(lái)實(shí)現(xiàn)這一點(diǎn)無(wú)疑會(huì)困難得多,而且這只是在部署算法時(shí)需要添加到虛擬環(huán)境中的另一個(gè)依賴項(xiàng)。另外,Python中的計(jì)數(shù)器類型有很多Pandas系列沒(méi)有的特性,這使其在某些情況下更有用。

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.出隊(duì)

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

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有用的小技巧,離精通更進(jìn)一步

這些是筆者一直愛(ài)用的Python技巧,都非常通用和實(shí)用,實(shí)踐中總有機(jī)會(huì)能用到。Python的標(biāo)準(zhǔn)庫(kù)函數(shù)工具箱變得越來(lái)越多樣,還有很多筆者也沒(méi)聽(tīng)說(shuō)過(guò)的工具。學(xué)無(wú)止境,這多么令人興奮!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    585

    瀏覽量

    20604
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4807

    瀏覽量

    85041
  • 標(biāo)準(zhǔn)庫(kù)

    關(guān)注

    0

    文章

    31

    瀏覽量

    7526
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【OK210申請(qǐng)】嵌入式進(jìn)一步學(xué)習(xí)(想試著做個(gè)簡(jiǎn)單的平板玩玩)

    借這個(gè)機(jī)會(huì),申請(qǐng)這塊開(kāi)發(fā)版,便于日常學(xué)習(xí),而且我即將大四了,希望用這塊開(kāi)發(fā)版能更進(jìn)一步的學(xué)習(xí),則方便之后的課設(shè),二則便于找工作,三則嵌入式也是自己敢興趣。衷心希望能獲得這次機(jī)會(huì),謝謝。項(xiàng)目描述:之前
    發(fā)表于 06-24 17:06

    E4406A達(dá)到adc對(duì)齊時(shí)不會(huì)更進(jìn)一步

    你好E4406A有問(wèn)題----當(dāng)我啟動(dòng)時(shí) - 設(shè)備按我的意愿啟動(dòng)自動(dòng)對(duì)齊,但是當(dāng)它達(dá)到adc對(duì)齊時(shí)它不會(huì)更進(jìn)一步。根本沒(méi)有消息。可以用abort終止它,并且分析儀似乎正常工作---- ??我可以用
    發(fā)表于 12-28 16:06

    如何讓計(jì)算機(jī)視覺(jué)更進(jìn)一步接近人類視覺(jué)?

    如何讓計(jì)算機(jī)視覺(jué)更進(jìn)一步接近人類視覺(jué)?
    發(fā)表于 06-01 06:27

    進(jìn)一步提高UPS電源的可靠性

    及設(shè)備用電安全的需要,更進(jìn)一步提高電源的可靠性,及時(shí)發(fā)現(xiàn)供電隱患,提高設(shè)備的運(yùn)行壽命,對(duì)電源進(jìn)行在線管理已經(jīng)成為普遍的需求。針對(duì)早期的UPS電源的RS232標(biāo)準(zhǔn),已經(jīng)無(wú)法滿足目前計(jì)算機(jī)硬件及軟件技...
    發(fā)表于 12-28 08:05

    天齊鋰業(yè)年產(chǎn)2萬(wàn)噸碳酸鋰工廠項(xiàng)目的實(shí)施 2020年實(shí)現(xiàn)10萬(wàn)噸目標(biāo)更進(jìn)一步

    本次年產(chǎn)2萬(wàn)噸碳酸鋰工廠項(xiàng)目的實(shí)施,將讓天齊鋰業(yè)2020年實(shí)現(xiàn)10萬(wàn)噸鋰化工產(chǎn)品產(chǎn)能目標(biāo)更進(jìn)一步
    的頭像 發(fā)表于 01-05 09:18 ?6506次閱讀

    如何從工業(yè)4.0更進(jìn)一步轉(zhuǎn)向工業(yè)5.0?

    工業(yè)4.0能帶來(lái)自動(dòng)化和前所未有的生產(chǎn)力水平,許多公司現(xiàn)已采用物聯(lián)網(wǎng)(IoT)、人工智能(AI)、大數(shù)據(jù)、云端運(yùn)算及先進(jìn)機(jī)器人等技術(shù)。然而,許多處于技術(shù)前沿的公司已更進(jìn)一步轉(zhuǎn)向工業(yè)5.0。
    發(fā)表于 07-09 09:18 ?1329次閱讀

    提速降費(fèi)政策更進(jìn)一步 取消流量“漫游”費(fèi)為5G鋪路

    5G時(shí)代正從規(guī)劃走向現(xiàn)實(shí),對(duì)于運(yùn)營(yíng)商而言,進(jìn)一步降低流量資費(fèi),也是為5G網(wǎng)絡(luò)的逐步推廣鋪路。
    的頭像 發(fā)表于 05-10 14:32 ?6008次閱讀

    Oculus Quest VR頭盔獲得FCC認(rèn)證 意味著距離上市更進(jìn)一步

    emissions)產(chǎn)品的安全性,以及是否符合法規(guī)。支持無(wú)線電、WiFi、遠(yuǎn)紅外等技術(shù)的產(chǎn)品必須在發(fā)售前獲得FCC認(rèn)證,獲得認(rèn)證意味著距離上市更進(jìn)一步。
    發(fā)表于 12-25 14:01 ?3162次閱讀

    縮短交互路徑 智能家居產(chǎn)品或者全屋智能的體驗(yàn)將更進(jìn)一步

    通過(guò)模組把多種傳感、碎片數(shù)據(jù)、AI算法和自控技術(shù)深度結(jié)合,或許能讓智能家居產(chǎn)品或者全屋智能的體驗(yàn)更進(jìn)一步
    發(fā)表于 04-24 15:16 ?974次閱讀

    智能家居交互方向或是無(wú)感化 全屋智能的體驗(yàn)將更進(jìn)一步

    通過(guò)模組把多種傳感、碎片數(shù)據(jù)、AI算法和自控技術(shù)深度結(jié)合,或許能讓智能家居產(chǎn)品或者全屋智能的體驗(yàn)更進(jìn)一步
    發(fā)表于 04-26 08:48 ?1397次閱讀

    華為推出新功能,鴻蒙系統(tǒng)將更進(jìn)一步

    近日,華為推出新功能,鴻蒙OS更進(jìn)一步。我們都知道,鴻蒙OS已經(jīng)發(fā)布段時(shí)間了,近日華為升級(jí)了項(xiàng)新功能,這也意味著鴻蒙OS更近一步
    的頭像 發(fā)表于 10-31 16:54 ?3929次閱讀

    Type-C接口需求的增加,使得USB PD實(shí)現(xiàn)進(jìn)一步擴(kuò)增

    USB PD(電力傳輸)控制IC配合Type-C接口之需求2017年有望更進(jìn)一步擴(kuò)增,熟悉半導(dǎo)體業(yè)者表示,2017年智能型手機(jī)市場(chǎng)波動(dòng)較大,外傳蘋果(Apple)大改款iPhone除了快充功能外,也將導(dǎo)入無(wú)線充電。
    發(fā)表于 12-13 13:59 ?836次閱讀

    更進(jìn)一步學(xué)習(xí)MySQL

    138 張圖帶你 MySQL 入門 中主要介紹了基本的 SQL 命令、數(shù)據(jù)類型和函數(shù),在具備以上知識(shí)后,你就可以進(jìn)行 MySQL 的開(kāi)發(fā)工作了,但是如果要成為個(gè)合格的開(kāi)發(fā)人員,你還要具備一些更高
    的頭像 發(fā)表于 09-24 16:04 ?1693次閱讀
    <b class='flag-5'>更進(jìn)一步</b>學(xué)習(xí)MySQL

    【轉(zhuǎn)載】更進(jìn)一步的了解Keil Flash的下載算法

    【轉(zhuǎn)載】更進(jìn)一步的了解Keil Flash的下載算法
    發(fā)表于 11-26 16:36 ?1次下載
    【轉(zhuǎn)載】<b class='flag-5'>更進(jìn)一步</b>的了解Keil Flash的下載算法

    榮耀Magic4系列3月17日發(fā)布會(huì),隱私保護(hù)更進(jìn)一步

    作為以“每處,更進(jìn)一步”為極致追求的榮耀新代智慧旗艦,榮耀Magic4系列在性能、影像、顯示、安全等維度都實(shí)現(xiàn)了全面進(jìn)階,其搭載的全新升級(jí)多主攝融合計(jì)算攝影系統(tǒng)、首次讓手機(jī)屏幕同時(shí)支持LTPO
    的頭像 發(fā)表于 03-14 13:09 ?2592次閱讀
    榮耀Magic4系列3月17日發(fā)布會(huì),隱私保護(hù)<b class='flag-5'>更進(jìn)一步</b>
    肇东市| 皇冠网热门小说| 蕲春县| 真钱百家乐游戏大全| 百家乐官网视频免费下载| 网上百家乐必赢玩| 百家乐官网发牌牌规| 金公主百家乐现金网| 真让百家乐游戏开户| 网上百家乐官网有哪些玩法| 大发888官方 3000| 解析百家乐投注法| 百家乐官网之对子的技巧| 大发888国际娱乐网| 百家乐怎么玩才会赢钱| 24山吉凶八卦图| 百家乐官网有多少网址| 威尼斯人娱乐诚| 做生意怎么看风水| 扑克百家乐官网赌器| 荔波县| 大发888官方下载网站| 百家乐另类投注法| 圣安娜百家乐官网代理| 娱网棋牌游戏大厅下载| 百家乐网上娱乐场开户注册| 老牌百家乐官网娱乐城| 蓝田县| 寿宁县| 镇巴县| 博亿国际| 奇博网上娱乐| 世嘉百家乐的玩法技巧和规则| 赌百家乐官网怎样能赢| 澳门百家乐官网怎么赢钱| 百家乐官网技巧之微笑心法| 大发888作弊| 大发888体育注册| 博之道百家乐的玩法技巧和规则| 怎样赢百家乐官网的玩法技巧和规则 | ez百家乐官网技巧|