1. 25條很棒的Python一行代碼,建議收藏!

        共 4201字,需瀏覽 9分鐘

         ·

        2021-01-26 19:30

        點擊上方“Python之禪”,選擇加"星標(biāo)"置頂

        重磅干貨,第一時間送達(dá)


        自從我用Python編寫第一行代碼以來,就被它的簡單性、出色的可讀性和特別流行的一行代碼所吸引。


        在下面,我將給大家介紹并解釋一些Python一行程序。


        可能有些你還不知道,但對你未來的Python項目很有用。



        ▍1、交換兩個變量


        #?a?=?4?b?=?5
        a,b?=?b,a
        #?print(a,b)?>>?5,4


        讓我們通過交換兩個變量作為一個簡單的開始。


        此方法是最簡單、最直觀的方法之一,無需使用臨時變量或應(yīng)用算術(shù)操作即可編寫。



        ▍2、多個變量賦值


        a,b,c?=?4,5.5,'Hello'
        #print(a,b,c)?>>?4,5.5,hello


        你可以使用逗號和變量一次性將多個值分配給變量。使用此技術(shù),你可以一次分配多個數(shù)據(jù)類型。?


        你可以使用列表將值分配給變量。下面是將列表中的多個值分配給變量的示例。


        a,b,*c?=?[1,2,3,4,5]
        print(a,b,c)
        >?1?2?[3,4,5]



        ▍3、列表中偶數(shù)的和


        有很多方法可以做到這一點,但最好和最簡單的方法是使用列表索引和sum函數(shù)。


        a?=?[1,2,3,4,5,6]
        s?=?sum([num?for?num?in?a?if?num%2?==?0])
        print(s)
        >>?12



        ▍4、從列表中刪除多個元素


        del是Python中用于從列表中刪除值的關(guān)鍵字。


        ####?Deleting?all?even
        a?=?[1,2,3,4,5]
        del?a[1::2]
        print(a)

        >[1,?3,?5]

        a



        ▍5、讀取文件


        lst?=?[line.strip()?for?line?in?open('data.txt')]
        print(lst)


        這里我們使用列表來處理。


        首先,我們打開一個文本文件,并使用for循環(huán),逐行讀取。?最后,使用strip刪除所有不必要的空間。?


        通過使列表功能,使得代碼簡單,更短


        list(open('data.txt'))

        ##Using?with?will?also?close?the?file?after?use
        with?open("data.txt")?as?f:
        ????lst=[line.strip()?for?line?in?f]
        print(lst)



        ▍6、將數(shù)據(jù)寫入文件


        with?open("data.txt",'a',newline='\n')?as?f:?
        ????f.write("Python?is?awsome")


        上面的代碼首先創(chuàng)建一個文件data.txt(如果沒有的話),然后它會在文件中寫Python is awesome。



        ▍7、創(chuàng)建列表


        lst?=?[i?for?i?in?range(0,10)]
        print(lst)
        >?[0,?1,?2,?3,?4,?5,?6,?7,?8,?9]

        or

        lst?=?list(range(0,10))
        print(lst)


        我們也可以使用相同的方法創(chuàng)建一個字符串列表。


        lst?=?[("Hello?"+i)?for?i?in?['Karl','Abhay','Zen']]
        print(lst)
        >?['Hello?Karl',?'Hello?Abhay',?'Hello?Zen']



        ▍8、映射列表或類型轉(zhuǎn)換整個列表

        有時在我們的項目中,我們需要更改列表中所有元素的數(shù)據(jù)類型。你想到的第一個方法可能是使用循環(huán),然后訪問列表中的所有元素,然后一個接一個地更改元素的數(shù)據(jù)類型。


        這個方法是老派的,在Python中我們有一個映射函數(shù),可以為我們做這些工作。


        list(map(int,['1','2','3']))
        >?[1,?2,?3]

        list(map(float,[1,2,3]))
        >?[1.0,?2.0,?3.0]

        [float(i)?for?i?in?[1,2,3]]
        >?[1.0,?2.0,?3.0]



        ▍9、創(chuàng)建集合


        我們用于創(chuàng)建列表的方法也可以用于創(chuàng)建集合。讓我們使用包含范圍內(nèi)所有偶數(shù)的平方根方法來創(chuàng)建一個集合。


        ####?Square?of?all?even?numbers?in?an?range
        {x**2?for?x?in?range(10)?if?x%2==0}

        >?{0,?4,?16,?36,?64}



        ▍10、Fizz Buzz


        在這個測試中,我們需要編寫一個程序來打印從1到20的數(shù)字。但如果是3的倍數(shù),打印Fizz,如果是5的倍數(shù),打印Buzz,如果同時是3和5的倍數(shù),打印FizzBuzz,否則打印數(shù)字。


        看起來我們必須使用循環(huán)和多個if-else語句。如果你嘗試用其他語言來做,你可能需要寫10行代碼,但是使用Python,我們可以只用一行代碼就實現(xiàn)FizzBuzz。


        ['FizzBuzz'?if?i%3==0?and?i%5==0
        ????else?'Fizz'?if?i%3==0?
        ????else?'Buzz'?if?i%5==0?
        ????else?i??for?i?in?range(1,20)]


        在上面的代碼中,我們使用列表理解來運行一個從1到20的循環(huán),然后在循環(huán)的每次迭代中,我們檢查數(shù)字是否能被3或5整除。如果是,那么我們用Fizz或Buzz替換數(shù)值,或者用FizzBuzz數(shù)值。



        ▍11、回文


        回文是一個數(shù)字或字符串,當(dāng)它被反轉(zhuǎn)時看起來是一樣的。


        text?=?'level'
        ispalindrome?=?text?==?text[::-1]
        ispalindrome

        >?True



        ▍12、用空格分隔的整數(shù)到一個列表


        lis?=?list(map(int,?input().split()))
        print(lis)

        >?1?2?3?4?5?6?7?8
        [1,?2,?3,?4,?5,?6,?7,?8]



        ▍13、Lambda函數(shù)


        lambda函數(shù)是一個小型匿名函數(shù)。lambda函數(shù)可以接受任意數(shù)量的參數(shù),但只能有一個表達(dá)式。


        #?Function?that?returns?square?of?any?number
        sqr?=?lambda?x:?x?*?x
        sqr(10)

        >?100



        ▍14、檢查列表中數(shù)字的存在


        num?=?5
        if?num?in?[1,2,3,4,5]:
        ?????print('present')

        >?present??



        ▍15、打印圖案


        在Python中,我們只需要一行代碼就可以繪制出令人驚嘆的圖案。


        n?=?5
        print('\n'.join('??'?*?i?for?i?in?range(1,?n?+?1)))

        >
        ??
        ????
        ??????
        ????????
        ????????????



        ▍16、查找階乘


        階乘是一個整數(shù)和它下面所有整數(shù)的乘積。


        import?math
        n?=?6
        math.factorial(n)

        >?720??



        ▍17、斐波納契數(shù)列


        一組數(shù)字,其中每個數(shù)字(斐波那契數(shù))是前面兩個數(shù)字的和。最簡單的斐波那契數(shù)列1,1,2,3,5,8,13等等。可以使用列表推導(dǎo)式和for循環(huán)在一個范圍內(nèi)創(chuàng)建斐波那契數(shù)列。


        fibo?=?[0,1]
        [fibo.append(fibo[-2]+fibo[-1])?for?i?in?range(5)]
        fibo

        >?[0,?1,?1,?2,?3,?5,?8]??



        ▍18、質(zhì)數(shù)


        質(zhì)數(shù)是一個只能被自身和1整除的數(shù)。例如:2、3、5、7等。為了在一個范圍內(nèi)生成質(zhì)數(shù),我們可以使用帶有filter和lambda的list函數(shù)來生成質(zhì)數(shù)。


        list(filter(lambda?x:all(x?%?y?!=?0?for?y?in?range(2,?x)),?range(2,?13)))

        >?[2,?3,?5,?7,?11]??



        ▍19、查找最大數(shù)值


        findmax?=?lambda?x,y:?x?if?x?>?y?else?y?
        findmax(5,14)

        >?14

        or?
        max(5,14)??


        在上面的代碼中,我們使用lambda函數(shù)檢查比較條件,并根據(jù)返回的最大值。


        或者使用max()內(nèi)置函數(shù)。



        ▍20、線性代數(shù)


        有時候我們需要將列表中的元素縮放2到5倍。下面的代碼解釋了如何做到這一點。


        def?scale(lst,?x):
        ????return?[i*x?for?i?in?lst]?


        scale([2,3,4],?2)

        >?[4,6,8]??



        ▍21、矩陣轉(zhuǎn)置


        您需要將所有行轉(zhuǎn)換為列,反之亦然。在Python中,可以使用zip函數(shù)在一行代碼中置換一個矩陣。


        a=[[1,2,3],
        ???[4,5,6],
        ???[7,8,9]]?
        transpose?=?[list(i)?for?i?in?zip(*a)]?
        transpose

        >?[[1,?4,?7],?[2,?5,?8],?[3,?6,?9]]



        ▍22、計數(shù)


        當(dāng)我們需要知道某個值在文本中出現(xiàn)的次數(shù)時,這是一個重要而有用的用例。在Python中,有re庫可以來幫你完成這項工作。


        import?re

        len(re.findall('python','python?is?a?programming?language.?python?is?python.'))

        >?3



        ▍23、用其他文本替換文本


        "python?is?a?programming?language.python?is?python".replace("python",'Java')

        >?Java?is?a?programming?language.?Java?is?Java



        ▍24、模擬拋硬幣


        這可能不是那么重要,但當(dāng)你需要從一組給定的選擇中生成一些隨機(jī)選擇時,它會非常有用。


        import?random

        random.choice(['Head',"Tail"])

        >?Head


        ▍25、生成組


        groups?=?[(a,?b)?for?a?in?['a',?'b']?for?b?in?[1,?2,?3]]?
        groups

        >?[('a',?1),?('a',?2),?('a',?3),?('b',?1),?('b',?2),?('b',?3)]



        推薦閱讀:

        微信8.0,普通人有什么機(jī)會?

        墻裂建議收藏,100道Python練手題目

        瀏覽 52
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
          
          

            1. 日大黑逼| 91天堂素人 | 逼中极品一线天 | 少妇高潮20p | 日本东京热无码 |