<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          20段極簡(jiǎn)Python代碼:這些小技巧你都Get了么

          共 3978字,需瀏覽 8分鐘

           ·

          2020-01-15 23:22


          c9d86e31764e9ff12935cc926e88e890.webp



          選自 | towardsdatascience轉(zhuǎn)自 | 機(jī)器之心


          Python 是機(jī)器學(xué)習(xí)最廣泛采用的編程語(yǔ)言,它最重要的優(yōu)勢(shì)在于編程的易用性。如果讀者對(duì)基本的 Python 語(yǔ)法已經(jīng)有一些了解,那么這篇文章可能會(huì)給你一些啟發(fā)。作者簡(jiǎn)單概覽了 30 段代碼,它們都是平常非常實(shí)用的技巧,我們只要花幾分鐘就能從頭到尾瀏覽一遍。



          1.重復(fù)元素判定


          以下方法可以檢查給定列表是不是存在重復(fù)元素,它會(huì)使用 set() 函數(shù)來移除所有重復(fù)元素。

          def all_unique(lst):
          return len(lst) == len(set(lst))

          x = [1,1,2,2,3,2,3,4,5,6]
          y = [1,2,3,4,5]
          all_unique(x) # False
          all_unique(y) # True


          2.字符元素組成判定


          檢查兩個(gè)字符串的組成元素是不是一樣的。

          from collections import Counter

          def anagram(first, second):
          return Counter(first) == Counter(second)

          anagram("abcd3", "3acdb") # True


          3.內(nèi)存占用


          下面的代碼塊可以檢查變量 variable 所占用的內(nèi)存。

          import sys

          variable = 30
          print(sys.getsizeof(variable)) # 24


          4.字節(jié)占用


          下面的代碼塊可以檢查字符串占用的字節(jié)數(shù)。

          def byte_size(string):
          return(len(string.encode( utf-8 )))


          byte_size( ? ) # 4
          byte_size( Hello World ) # 11


          5.打印 N 次字符串


          該代碼塊不需要循環(huán)語(yǔ)句就能打印 N 次字符串。

          n = 2;
          s ="Programming";

          print(s * n);
          # ProgrammingProgramming


          6.大寫第一個(gè)字母


          以下代碼塊會(huì)使用 title() 方法,從而大寫字符串中每一個(gè)單詞的首字母。

          s = "programming is awesome"

          print(s.title())
          # Programming Is Awesome


          7. 分塊


          給定具體的大小,定義一個(gè)函數(shù)以按照這個(gè)大小切割列表。

          from math import ceil

          def chunk(lst, size):
          return list(
          map(lambda x: lst[x * size:x * size + size],
          list(range(0, ceil(len(lst) / size)))))

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


          8.壓縮


          這個(gè)方法可以將布爾型的值去掉,例如(False,None,0,“”),它使用 filter() 函數(shù)。

          def compact(lst):
          return list(filter(bool, lst))


          compact([0, 1, False, 2, , 3, a , s , 34])
          # [ 1, 2, 3, a , s , 34 ]


          9.解包


          如下代碼段可以將打包好的成對(duì)列表解開成兩組不同的元組。

          array = [[ a ,  b ], [ c ,  d ], [ e ,  f ]]
          transposed = zip(*array)
          print(transposed)
          # [( a , c , e ), ( b , d , f )]



          10.鏈?zhǔn)綄?duì)比


          我們可以在一行代碼中使用不同的運(yùn)算符對(duì)比多個(gè)不同的元素。

          a = 3
          print( 2 < a < 8) # True
          print(1 == a < 2) # False


          11.逗號(hào)連接


          下面的代碼可以將列表連接成單個(gè)字符串,且每一個(gè)元素間的分隔方式設(shè)置為了逗號(hào)。

          hobbies = ["basketball", "football", "swimming"]

          print("My hobbies are: " + ", ".join(hobbies))
          # My hobbies are: basketball, football, swimming


          12.逗號(hào)連接


          以下方法將統(tǒng)計(jì)字符串中的元音 (‘a(chǎn)’, ‘e’, ‘i’, ‘o’, ‘u’) 的個(gè)數(shù),它是通過正則表達(dá)式做的。

          import re

          def count_vowels(str):
          return len(len(re.findall(r [aeiou] , str, re.IGNORECASE)))

          count_vowels( foobar ) # 3
          count_vowels( gym ) # 0


          13.首字母小寫


          如下方法將令給定字符串的第一個(gè)字符統(tǒng)一為小寫。

          def decapitalize(string):
          return str[:1].lower() + str[1:]


          decapitalize( FooBar ) # fooBar
          decapitalize( FooBar ) # fooBar


          14.展開列表


          該方法將通過遞歸的方式將列表的嵌套展開為單個(gè)列表。

          def spread(arg):
          ret = []
          for i in arg:
          if isinstance(i, list):
          ret.extend(i)
          else:
          ret.append(i)
          return ret

          def deep_flatten(lst):
          result = []
          result.extend(
          spread(list(map(lambda x: deep_flatten(x) if type(x) == list else x, lst))))
          return result


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



          15.列表的差


          該方法將返回第一個(gè)列表的元素,其不在第二個(gè)列表內(nèi)。如果同時(shí)要反饋第二個(gè)列表獨(dú)有的元素,還需要加一句 set_b.difference(set_a)。

          def difference(a, b):
          set_a = set(a)
          set_b = set(b)
          comparison = set_a.difference(set_b)
          return list(comparison)


          difference([1,2,3], [1,2,4]) # [3]



          16.通過函數(shù)取差


          如下方法首先會(huì)應(yīng)用一個(gè)給定的函數(shù),然后再返回應(yīng)用函數(shù)后結(jié)果有差別的列表元素。

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


          from math import floor
          difference_by([2.1, 1.2], [2.3, 3.4],floor) # [1.2]
          difference_by([{ x : 2 }, { x : 1 }], [{ x : 1 }], lambda v : v[ x ])
          # [ { x: 2 } ]



          17.鏈?zhǔn)胶瘮?shù)調(diào)用


          你可以在一行代碼內(nèi)調(diào)用多個(gè)函數(shù)。

          def add(a, b):
          return a + b

          def subtract(a, b):
          return a - b

          a, b = 4, 5
          print((subtract if a > b else add)(a, b)) # 9


          18.檢查重復(fù)項(xiàng)


          如下代碼將檢查兩個(gè)列表是不是有重復(fù)項(xiàng)。

          def has_duplicates(lst):
          return len(lst) != len(set(lst))


          x = [1,2,3,4,5,5]
          y = [1,2,3,4,5]
          has_duplicates(x) # True
          has_duplicates(y) # False


          19.合并兩個(gè)字典


          下面的方法將用于合并兩個(gè)字典。

          def merge_two_dicts(a, b):
          c = a.copy() # make a copy of a
          c.update(b) # modify keys and values of a with the ones from b
          return c


          a = { x : 1, y : 2}
          b = { y : 3, z : 4}
          print(merge_two_dicts(a, b))
          # { y : 3, x : 1, z : 4}

          在 Python 3.5 或更高版本中,我們也可以用以下方式合并字典:

          def merge_dictionaries(a, b)
          return {**a, **b}


          a = { x :
          1, y : 2}
          b = { y : 3, z : 4}
          print(merge_dictionaries(a, b))
          # { y : 3, x : 1, z : 4}


          20.將兩個(gè)列表轉(zhuǎn)化為字典


          如下方法將會(huì)把兩個(gè)列表轉(zhuǎn)化為單個(gè)字典。

          def to_dictionary(keys, values):
          return dict(zip(keys, values))


          keys = ["a", "b", "c"]
          values = [2, 3, 4]
          print(to_dictionary(keys, values))
          # { a : 2, c : 4, b : 3}
          瀏覽 44
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色大A在线 | 久久婷婷免费视频 | 狠狠干在线观看 | av电影天堂在线观看 | 淫色无码|