>> initialize_2d_list( 2 , 2 ) [[None, None], [None, None]] > >> initialize_2d_list( 2 , 2 , 0 ) [[0, 0], [0, 0]] 2.函數切割數組 **解讀:**使用一個函數應用到一個數組的每個元素上," />

在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

30秒就能學會的代碼片段

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-31 15:22 ? 次閱讀

今天給大家帶來一些30秒就能學會的代碼片段,這些代碼潛力無限,蘊含了豐富的python編程思維,應用領域非常廣泛,而且學起來非常簡單。

1."二維列表"

**解讀:**根據給定的長和寬,以及初始值,返回一個二維列表。

def initialize_2d_list(w, h, val=None):
    return [[val for x in range(w)] for y in range(h)]

例:

> >> initialize_2d_list(2,2)
[[None, None], [None, None]]

> >> initialize_2d_list(2,2,0)
[[0, 0], [0, 0]]

2.函數切割數組

**解讀:**使用一個函數應用到一個數組的每個元素上,使得這個數組被切割成兩個部分。如果說,函數應用到元素上返回的值為True,則該元素被切割到第一部分,否則分為第二部分。

def bifurcate_by(lst, fn):
    return [
      [x for x in lst if fn(x)],
      [x for x in lst if not fn(x)]
    ]

例:

> >> bifurcate_by(['beep', 'boop', 'foo', 'bar'], lambda x: x[0] == 'b')
[['beep', 'boop', 'bar'], ['foo']]

3."交集點"

解讀: 兩個數組在被一個函數應用后,從第一個數組中提取出共有的元素的原元素組成一個新的數組。

def intersection_by(a, b, fn):
    _b = set(map(fn, b))
    return [item for item in a if fn(item) in _b]

例:

>> > from math import floor
 >> > intersection_by([2.1, 1.2], [2.3, 3.4],floor)
[2.1]

4.最大值下標

**解讀:**返回數組中最大值的下標。

def max_element_index(arr):
    return arr.index(max(arr))

例:

>> > max_element_index([5, 8, 9, 7, 10, 3, 0])
4

5.數組對稱差

**解讀:**找出兩個數組中不同的元素,并合成為一個新的數組。

def symmetric_difference(a, b):
    _a, _b = set(a), set(b)
    return [item for item in a if item not in _b] + [item for item in b if item not in _a]

例:

> >> symmetric_difference([1, 2, 3], [1, 2, 4])
[3, 4]

6."夾數"

解讀: 如果 num 落在一段數字范圍內,則返回num,否則返回離這個范圍最近的邊界:

def clamp_number(num,a,b):
    return max(min(num, max(a,b)),min(a,b))

例:

>> clamp_number(2,3,10)
3

 >> clamp_number(7,3,10)
7

 >> clamp_number(124,3,10)
10

7.鍵值映射

解讀: 使用對象的鍵重新創建對象,并運行函數為每個對象的鍵創建值。
使用dict.keys()遍歷對象的鍵, 通過函數生成一個新的值。

def map_values(obj, fn):
    ret = {}
    for key in obj.keys():
        ret[key] = fn(obj[key])
    return ret

**
例:**

>> > users = {
...   'fred': { 'user': 'fred', 'age': 40 },
...   'pebbles': { 'user': 'pebbles', 'age': 1 }
... }

 >> > map_values(users, lambda u : u['age'])
{'fred': 40, 'pebbles': 1}

 >> > map_values(users, lambda u : u['age']+1)
{'fred': 41, 'pebbles': 2}

8.大小寫轉換

解讀: 將英文單詞的首字母大寫改為小寫。
upper_rest參數:設定是否將除首字母外的其他字母大小寫轉換。

def decapitalize(s, upper_rest=False):
    return s[:1].lower() + (s[1:].upper() if upper_rest else s[1:])

例:

>> > decapitalize('FooBar')
'fooBar'

 >> > decapitalize('FooBar', True)
'fOOBAR'

9.同鍵求和

解讀: 對列表中的各個字典里相同鍵值的對象求和。

def sum_by(lst, fn):
    return sum(map(fn,lst))

例:

>> > sum_by([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }], lambda v : v['n'])
14

10.一行代碼求出現次數

解讀: 求出列表中某個數出現的次數和。

def count_occurrences(lst, val):
    return len([x for x in lst if x == val and type(x) == type(val)])

例:

>> > count_occurrences([1, 1, 2, 1, 2, 3], 1)
3

11.數組再分組

對一個列表根據所需要的大小進行細分:

圖片

效果如下:

chunk([1,2,3,4,5],2)
# [[1,2],[3,4],5]

return中,map的第二個參數是一個列表,map會將列表中的每一個元素用于調用第一個參數的 function 函數,返回包含每次 function 函數返回值的新列表。

12.數字轉數組

同樣是一則關于map的應用,將整形數字拆分到數組中:

def digitize(n):
    return list(map(int, str(n)))

效果如下:

digitize(123)
# [1, 2, 3]

它將整形數字n轉化為字符串后,還自動對該字符串進行了序列化分割,最后將元素應用到map的第一個參數中,轉化為整形后返回。

13.非遞歸斐波那契

還記得菲波那切數列嗎,前兩個數的和為第三個數的值,如0、1、1、2、3、5、8、13....

如果使用遞歸來實現這個算法,效率非常低下,我們使用非遞歸的方式實現:

圖片

效果如下:

fibonacci(7)
# [0, 1, 1, 2, 3, 5, 8, 13]

這樣看是很簡單,但是思維要繞的過來哦。

14.下劃線化字符串

批量統一變量名稱或者字符串格式。

圖片

效果如下:

snake('camelCase')# 'camel_case'

snake('some text')# 'some_text'

snake('some-mixed_string With spaces_underscores-and-hyphens')# 'some_mixed_string_with_spaces_underscores_and_hyphens'

snake('AllThe-small Things')# "all_the_small_things"

re.sub用于替換字符串中的匹配項。這里其實是一個“套娃”用法,一開始可能不太好理解,需要慢慢理解。

第一個替換 ,是將s字符串中,使用' '替換'-'。

第二個替換 ,是針對第一個替換后的字符串,對符合'([A-Z]+)'正則表達式的字符區段(全大寫的單詞)用r' 1'替換,也就是用空格區分開每一個單詞。

第三個替換 ,是對第二個替換后的字符串,對符合'([A-Z][a-z]+)'正則表達式的字符區段(也就是首字母大寫,其他字母小寫的詞語)用r' 1'替換,也是將單詞用空格分隔開。

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

    關注

    88

    文章

    3685

    瀏覽量

    94923
  • 代碼
    +關注

    關注

    30

    文章

    4891

    瀏覽量

    70309
  • python
    +關注

    關注

    56

    文章

    4825

    瀏覽量

    86289
  • 數組
    +關注

    關注

    1

    文章

    419

    瀏覽量

    26398
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    30個單片機編程例子詳解,學會了其他的也能更快掌握

    `單片機編程知識都是從無到有,剛學會了一些理論知識,需要編程例子來驗證所學及擴展所學,這就是很好的30個編程例子,學會就能對其他更加困難的一知半解,再加強學習一下就變大神啦。`
    發表于 09-05 01:26

    目瞪口呆??!手機充電只需30

    甚至不到一分鐘的時間就能將將手機電源從0%充滿至100%!!于是我想到了新的廣告詞!”輕輕松松30,手機滿電!“  據外媒報道,以色列一家創業公司StoreDot研發了一套新的手機充電系統,充電速度
    發表于 01-12 16:40

    十一天學會Linux驅動編程計劃(第一天)

    本帖最后由 求學之路有你 于 2018-1-16 11:43 編輯 十一天學會Linux驅動編程計劃(第一天)簡單的Linux驅動,實現打印功能,對Linux驅動模塊有一個基本認識。代碼如下
    發表于 01-14 11:58

    請問我可以學習任何USAT匯編代碼片段來獲得USTAR1的運行嗎?

    嗨,伙計們,對于PIC32 MX460我可以學習任何USAT匯編代碼片段來獲得USTAR1的運行嗎?請讓我知道。謝謝大家,祝你們有美好的一天。Pete: 以上來自于百度翻譯 以下為原文 Hi
    發表于 06-19 10:05

    求提供一個使用IOBUF原語的小型VHDL代碼片段

    嗨,有人可以為我提供一個使用IOBUF原語的小型VHDL代碼片段。帶著敬意vjose2以上來自于谷歌翻譯以下為原文Hi , Can someone provide me with an small
    發表于 06-27 09:01

    在RT-Thread studio中Codeexpander代碼片段軟件不起作用是什么原因

    不知道有沒有人使用Codeexpander代碼片段管理軟件,在VScode、keil中,都可以使用,給自己寫好的代碼片段設置一個快捷鍵比如sthread,就可以直接輸入自己編寫的thr
    發表于 08-30 14:20

    在RT-Thread studio中Codeexpander代碼片段軟件不起作用是何原因?

    不知道有沒有人使用Codeexpander代碼片段管理軟件,在VScode、keil中,都可以使用,給自己寫好的代碼片段設置一個快捷鍵比如sthread,就可以直接輸入自己編寫的thr
    發表于 02-10 14:21

    30遞減計數器電路

    電子發燒友為您提供了30遞減計數器電路,該電路非常實用,用到了顯示屏以及部分芯片等電子元器件
    發表于 07-01 09:56 ?2508次閱讀
    <b class='flag-5'>30</b><b class='flag-5'>秒</b>遞減計數器電路

    如何教30優化到0.01詳細資料說明

    本文檔的主要內容詳細介紹的是如何教30優化到0.01詳細資料說明。
    發表于 07-23 17:37 ?1次下載
    如何教<b class='flag-5'>30</b><b class='flag-5'>秒</b>優化到0.01<b class='flag-5'>秒</b>詳細資料說明

    30代碼,就能讓20噸的發電機原地爆炸?

    這是美國國安部進行的一項秘密實驗,當時的一位員工邁克·阿桑特(Mike Assante)僅用30代碼,對重達27噸的發電機進行了代碼攻擊,就成功讓后者發生了爆炸。
    的頭像 發表于 11-23 11:22 ?1553次閱讀

    如何將若干視頻片段還原成原視頻?

    最多的功能就是切割功能,然后刪除和拼接視頻片接。 沒有剪過視頻的讀者可能不知道,在常用的剪輯軟件中視頻被切割成若干片段之后,每個片段都可以還原成原始視頻。 就比如一個 10 的視頻,在中間切一刀剪成兩個 5
    的頭像 發表于 05-13 11:23 ?9640次閱讀
    如何將若干視頻<b class='flag-5'>片段</b>還原成原視頻?

    華為移動服務中接觸衛士的代碼片段

    簡介 該項目是華為移動服務中接觸衛士的代碼片段,主要包括:密鑰管理、藍牙(BLE)任務管理、密鑰文件分析、數據存儲。本項目還提供了示例代碼,為您展示如何在已集成Google Exposure
    發表于 04-13 09:45 ?5次下載

    讓AI學會畫手的方法來了,給輸入加個buff就能控制生成細節

    相比之下,原擴散模型經過幾十億張圖片的預訓練,因此參數是被“鎖定”的。而這個“可訓練副本”只需要在特定任務的小數據集上訓練,就能學會條件控制。
    的頭像 發表于 02-21 11:00 ?1644次閱讀

    20個解決日常問題的Python代碼片段!

    在本文中,將分享20 個 Python 代碼片段,以幫助你應對日常編程挑戰。你可能已經知道其中一些片段,但有些其他片段對你來說可能是新的。趕緊使用這些有用的 Python
    的頭像 發表于 03-13 09:40 ?1191次閱讀

    C2000 DCSM ROM代碼片段/ROP漏洞

    電子發燒友網站提供《C2000 DCSM ROM代碼片段/ROP漏洞.pdf》資料免費下載
    發表于 08-28 09:39 ?0次下載
    C2000 DCSM ROM<b class='flag-5'>代碼</b><b class='flag-5'>片段</b>/ROP漏洞
    主站蜘蛛池模板: 免费一级毛片在级播放 | 天天干伊人 | 久久精品最新免费国产成人 | 好男人社区www的视频免费 | 欧美性精品| 日韩高清特级特黄毛片 | 免费视频不卡一区二区三区 | 国产三a级日本三级日产三级 | 天天干天天操天天摸 | cijilu刺激 国产 | 夜夜夜精品视频免费 | 国产盗摄女厕美女嘘嘘 | 波多野结衣在线一区 | 日韩免费精品一级毛片 | 女人69xxx| 欧美日韩一区视频 | 精品三级内地国产在线观看 | 丝袜美腿视频一区二区三区 | 天天艹天天 | 成人亚洲电影 | 51影院在线观看成人免费 | 中文字幕在线资源 | 亚洲精品第一 | 国模娜娜扒开嫩木耳 | 四虎影视4hu4虎成人 | 欧美色成人综合 | 乱色伦肉小说 | 国产理论| caoporn97人人做人人爱最新 | 色婷婷久久久swag精品 | 狠狠色噜狠狠狠狠色综合久 | 69女poren60| 久久综合狠狠综合久久综合88 | 手机看片久久青草福利盒子 | 天天爽夜夜爽8888视频精品 | 欧美猛交lxxxxxxxxx | 婷婷免费高清视频在线观看 | 色综合天天综一个色天天综合网 | 天天摸天天躁天天添天天爽 | 毛片网在线 | 天天色影视综合网 |