Iterator and Generator-2
2018-09-01 22:04
330 查看
lambda表达式
匿名函数
# lambda params:expression # params : 可选参数,都好分割变量名 # expression:表达式,可以用条件语句,没有return或yield # 用法: # 简单计算:lambda x: x*2 # 添加条件: lambda x :True if x > 8 else False # 多个参数 lambda x, y : x+y # 用作排序: users.sort(key = lambda x(x[0], x[1])) # 默认字典:①defaultdic(lambda:0) # ② defaultdict(lambda:'bj') # ③ defaultdic(lambda :(0, 0)) # 用作参数:① filter ② map # 要点:① 语法糖,用来穿件函数对象 ② 表达式不要太复杂
f = lambda x :x*2
f(3)
6
f = lambda x : True if x > 8 else False # 在if前面的是要返回的值
f(3)
False
f(9)
True
f = lambda x, y : x + y
f(8,9)
17
users = [('coop', 23), ('lilei', 26), ('hmm', 15), ('zhangsan', 40)]
users.sort(key=lambda x: (x[0],x[1])) # sort中有参数key,暗战key的值进行排序,以x[0] # 的值为key # 按照字母顺序排序
users
[('coop', 23), ('hmm', 15), ('lilei', 26), ('zhangsan', 40)]
users.sort(key=lambda x:(x[1],x[0])) # 按数字大小排序
users
[('hmm', 15), ('coop', 23), ('lilei', 26), ('zhangsan', 40)]
from collections import defaultdict
d = defaultdict(lambda :0) # 默认赋值
d['a']
0
d
defaultdict(<function __main__.<lambda>()>, {'a': 0})
d['b']
0
d
defaultdict(<function __main__.<lambda>()>, {'a': 0, 'b': 0})
d['c'] = 'coop'
d
defaultdict(<function __main__.<lambda>()>, {'a': 0, 'b': 0, 'c': 'coop'})
city = defaultdict(lambda : 'bj')
city
defaultdict(<function __main__.<lambda>()>, {})
city['shanghai']
'bj'
city
defaultdict(<function __main__.<lambda>()>, {'shanghai': 'bj'})
city['coop']
'bj'
city
defaultdict(<function __main__.<lambda>()>, {'shanghai': 'bj', 'coop': 'bj'})
point = defaultdict(lambda : (0, 0))
point[1]
(0, 0)
point[0]
(0, 0)
point['pp'] = (1,2)
point
defaultdict(<function __main__.<lambda>()>, {1: (0, 0), 0: (0, 0), 'pp': (1, 2)})
有些代码----一行搞定
# all 都是真 # any 任意 # min # max # sum # reversed # sorted # zip # 对应合并 # []列表 列表推到是 # ()生成器 生成器 # {k, v} 字典推倒 # set/{} 去重 # if 三元操作符 xx if x else y # enumerate 返回枚举,带索引
m = [1,2,3,0]
all(m) # 可能是函数等 """Signature: all(iterable, /) Docstring: Return True if bool(x) is True for all values x in the iterable 括号里面必须是可迭代的对象,如果可迭代对象里面的每一个都是True,则返回True """
False
m = [1,2,3,4,5] all(m)
True
def f1(): return True def f2(): return False def f3(): return True
all([f1(), f2(), f3()]) # [],可迭代的对象
False
# any
any([f1(), f2(), f3()])
True
m
[1, 2, 3, 4, 5]
min(m)
1
max(m)
5
sum(m) """Signature: sum(iterable, start=0, /) Docstring: Return the sum of a 'start' value (default: 0) plus an iterable of numbers """
"Signature: sum(iterable, start=0, /)\nDocstring:\nReturn the sum of a 'start' value (default: 0) plus an iterable of numbers\n"
sum(m)
15
reversed(m) """Init signature: reversed(self, /, *args, **kwargs) Docstring: reversed(sequence) -> reverse iterator over values of the sequence Return a reverse iterator"""
'Init signature: reversed(self, /, *args, **kwargs)\nDocstring: \nreversed(sequence) -> reverse iterator over values of the sequence\n\nReturn a reverse iterator'
reversed(m)
<list_reverseiterator at 0x12fcd4c9d68>
for i in reversed(m): print(i)
5 4 3 2 1
[i for i in reversed(m)]
[5, 4, 3, 2, 1]
[i for i in reversed(range(8))]
[7, 6, 5, 4, 3, 2, 1, 0]
m
[1, 2, 3, 4, 5]
m = [2,3,90,5,4,34,22,55] m.sort()
m
[2, 3, 4, 5, 22, 34, 55, 90]
m = [2,3,90,5,4,34,22,55]
sorted(m)
[2, 3, 4, 5, 22, 34, 55, 90]
sorted? """Signature: sorted(iterable, /, *, key=None, reverse=False) Docstring: Return a new list containing all items from the iterable in ascending order. A custom key function can be supplied to customize the sort order, and the reverse flag can be set to request the result in descending order. Type: builtin_function_or_method"""
m
[2, 3, 90, 5, 4, 34, 22, 55]
sorted(m, reverse=False)
[2, 3, 4, 5, 22, 34, 55, 90]
sorted(m, reverse=True)
[90, 55, 34, 22, 5, 4, 3, 2]
m1 = [-9,-3,-5,-7,3,4,6]
sorted(m1)
[-9, -7, -5, -3, 3, 4, 6]
sorted(m1, key = abs)
[-3, 3, 4, -5, 6, -7, -9]
zip? """Init signature: zip(self, /, *args, **kwargs) Docstring: zip(iter1 [,iter2 [...]]) --> zip object Return a zip object whose .__next__() method returns a tuple where the i-th element comes from the i-th iterable argument. The .__next__() method continues until the shortest iterable in the argument sequence is exhausted and then it raises StopIteration."""
x = [1,2,4,5,6,7,8]
y = ['q','b','c','d','e']
zip(x,y)
<zip at 0x12fcd3fc4c8>
print(zip(x,y))
<zip object at 0x0000012FCD4C6CC8>
print(list(zip(x,y)))
[(1, 'q'), (2, 'b'), (4, 'c'), (5, 'd'), (6, 'e')]
print(dict(zip(x,y)))
{1: 'q', 2: 'b', 4: 'c', 5: 'd', 6: 'e'}
name = ['coop','hmm','lilei'] city = ['beijing','shanghai','shenzhen']
dict(zip(name,city))
{'coop': 'beijing', 'hmm': 'shanghai', 'lilei': 'shenzhen'}
# 列表推导式 [i for i in range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[i^2 for i in range(10)]
[2, 3, 0, 1, 6, 7, 4, 5, 10, 11]
# 生成器表达式() (x**3 for i in range(8))
<generator object <genexpr> at 0x0000012FCD4B73B8>
for y in (x**3 for x in range(8)): print(y)
0 1 8 27 64 125 216 343
# 字典推导式 info = dict(zip(name, city))
info
{'coop': 'beijing', 'hmm': 'shanghai', 'lilei': 'shenzhen'}
info_new = {} for k, v in info.items(): info_new[k] = v.upper() print(info_new)
{'coop': 'BEIJING', 'hmm': 'SHANGHAI', 'lilei': 'SHENZHEN'}
{k:v.upper() for k, v in info.items()} # 与上面同样的效果
{'coop': 'BEIJING', 'hmm': 'SHANGHAI', 'lilei': 'SHENZHEN'}
# 去重set s = [1,1,2,3,4,5,4,5,64,6,4,3,6]
set(s)
{1, 2, 3, 4, 5, 6, 64}
s
[1, 1, 2, 3, 4, 5, 4, 5, 64, 6, 4, 3, 6]
list(set(s))
[64, 1, 2, 3, 4, 5, 6]
三元操作符
if True: pass else: pass
True if s =='a' else False
False
s
[1, 1, 2, 3, 4, 5, 4, 5, 64, 6, 4, 3, 6]
s = 'a'
True if s =='a' else False
True
相关文章推荐
- Python-iterator and generator
- [Java学习] Iterator, foreach, generics and callback in Java, C# and Python
- Java学习之Iterator(迭代器)的一般用法
- LeetCode 281. Zigzag Iterator(之字形迭代器)
- const_iterator与const iterator区别
- LeetCode[Design]----Peeking Iterator
- leetcode——173——Binary Search Tree Iterator
- Iterator遍历集合特点
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项
- Flatten Nested List Iterator
- List With Iterator(STL)
- 关于Struts2 <s:iterator><s:if><s:elseif><s:else>标签备忘录
- 23种设计模式(22)--Iterator模式
- 设计模式 —— 迭代器模式(Iterator Pattern)
- Enumeration和Iterator的区别
- Python iterator, generator
- C# Iterator迭代器的实现方式
- istream_iterator和ostream_iterator使用
- Java迭代 : Iterator和Iterable接口
- java的迭代器(Iterator)