實際問題有哪些?python
問題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
1. filter方法:對象
#!/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/