乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      filter()函數(shù)--python

       融水公子 2018-09-15
      filter()函數(shù)用于過濾序列。

      和map()類似,filter()也接收一個函數(shù)和一個序列。和map()不同的是,filter()把傳入的函數(shù)依次作用于每個元素,然后根據返回值是True還是False決定保留還是丟棄該元素。

      例如,在一個list中,刪掉偶數(shù),留奇數(shù),可以這么寫:

      def is_odd(n):
          return n % 2 == 1

      list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
      # 結果: [1, 5, 9, 15]
      --------------------------------------------------------------
      把一個序列中的字符串掉,可以這么寫:

      def not_empty(s):
          return s and s.strip()

      list(filter(not_empty, ['A', '', 'B', None, 'C', '  ']))
      # 結果: ['A', 'B', 'C']
      --------------------------------------------------------------
      不斷篩下去,就可以得到所有的素數(shù)

      用Python來實現(xiàn)這個算法,可以先構造一個從3開始的奇數(shù)序列:

      def _odd_iter():
          n = 1
          while True:
              n = n + 2
              yield n
      注意這是一個生成器,并且是一個無限序列。

      然后定義一個篩選函數(shù):

      def _not_divisible(n):
          return lambda x: x % n > 0
      最后,定義一個生成器,不斷返回下一個素數(shù):

      def primes():
          yield 2
          it = _odd_iter() # 初始序列
          while True:
              n = next(it) # 返回序列的第一個數(shù)
              yield n
              it = filter(_not_divisible(n), it) # 構造新序列
      這個生成器先返回第一個素數(shù)2,然后,利用filter()不斷產生篩選后的新的序列。

      由于primes()也是一個無限序列,所以調用時需要設置一個退出循環(huán)的條件:

      # 打印1000以內的素數(shù):
      for n in primes():
          if n < 1000:
              print(n)
          else:
              break
      注意到Iterator是惰性計算的序列,所以我們可以用Python表示“全體自然數(shù)”,“全體素數(shù)”這樣的序列,而代碼非常簡潔。

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多