Python-在列表、字典中篩選數據

實際問題有哪些?python

  1. 過濾掉列表[3,9,-1,10.-2......] 中負數
  2. 篩選出字典{‘li_ming’:90,’xiao_hong’:60,’li_kang’:95,’bei_men’:98} 中值高於90的項
  3. 篩選出集合{3,9,-1,10.-2......]中能被3整除的數

問題1如何解決?app

  最普通方法dom

#!/usr/bin/python3


def filter_l(data):
    res = []
    for i in data:
        if i > 0:
            res.append(i)
    return res

if __name__ == '__main__':
    data = [3, 9, -1, 10, -2]
    new_l = filter_l(data)
    print(new_l)

如何解決列表問題?函數

   初始化列表: 生成 -10 到 10 的隨機數列表,去除負數spa

  1filter方法:對象

#!/usr/bin/python3

from random import randint


def filter_l(data):
    # 循環data列表,把值一個一個取出 交個lambda中x,如何lambda函數爲True,返回x生成一個新的filter對象
    return filter(lambda x: x >= 0, data)

if __name__ == '__main__':
    # 列表生成10個 -10 到 10 的隨機數
    data = [randint(-10, 10) for _ in range(10)]
    print(data)
    # new_l 爲可迭代對象
    new_l = filter_l(data)
    print(list(new_l), type(new_l))

       2. 列表解析:blog

#!/usr/bin/python3

from random import randint


def filter_l(data):
    # 循環data列表,把值一個一個取出 是否知足if條件,知足True返回x生成一個新列表
    return [x for x in data if x >=0 ]

if __name__ == '__main__':
    # 列表生成10個 -10 到 10 的隨機數
    data = [randint(-10, 10) for _ in range(10)]
    print(data)
    # new_l 爲可迭代對象
    new_l = filter_l(data)
    print(list(new_l), type(new_l))

       運行速度比較:解析 > filter > 普通it

 

如何解決字典?for循環

              字典解析篩選數據:class

#!/usr/bin/python3

from random import randint


def filter_l(data):
    print(data.items())
    # 把字典轉換成dict_items,循環裏面的key和value,知足if條件返回對應的key和value值
    return {k: v for k, v in data.items() if v > 90}

if __name__ == '__main__':
    # 字典生成式
    data = {x: randint(0, 100) for x in range(10)}
    print(data)
    new_l = filter_l(data)
    print(new_l, type(new_l))

  如何解決集合問題?

#!/usr/bin/python3
from random import randint


def filter_l(data):
    # 迭代集合中值,知足條件爲True返回x
    return {x for x in data if x % 3 == 0}

if __name__ == '__main__':
    # 集合生成式
    data = {randint(0, 100) for x in range(10)}
    print(data)
    new_l = filter_l(data)
    print(new_l, type(new_l))

 

邏輯整理

   不管是解析器仍是普通方法,都須要for循環,if判斷,邏輯都是知足條件返回值,過濾出知足條件的值,不管是生成器仍是解析器都知足這個格式:「 返回值 for循環 if判斷 「,經過lambda知足格 式:「lambda 輸入值:條件, 格式化數據

北門吹雪: https://www.cnblogs.com/2bjiujiu/

相關文章
相關標籤/搜索