此方法仅保留第一个迭代中的值来查找两个迭代之间的差异
- 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. 输出差异
以下方法利用已有函数,寻找并输出两个列表之间的差异。
- 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. 链式函数调用
以下方法可以实现在一行中调用多个函数
- 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. 重复值存在与否
以下方法利用set()只包含唯一元素的特性来检查列表是否存在重复值。
- 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. 合并字库
以下方法可将两个字库合并。
- 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}
在Python3.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. 将两个列表转换为字库
以下方法可将两个列表转换为字库。
- 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}
21. 列举
以下代码段可以采用列举的方式来获取列表的值和索引。
- list = ["a", "b", "c", "d"]
- for index, element in enumerate(list):
- print("Value", element, "Index ", index, )
- # ('Value', 'a', 'Index ', 0)
- # ('Value', 'b', 'Index ', 1)
- #('Value', 'c', 'Index ', 2)
- # ('Value', 'd', 'Index ', 3)
22. 时间成本
(编辑:ASP站长网)
|