條件成立時的返回值 if 條件 else 條件不成立時的返回值python
三元表達式只支持雙分支結構app
x = 10 y = 20 if x > y: print(x) else: print(y) # 三元表達式 x = 10 y = 20 print(f"x if x > y else y: {x if x > y else y}") # x if x > y else y: 20
ls = [] for i in range(10) ls.append(i) print(ls) # 推導式 ls = [ i for i in range(10)] print(ls) ls = [ i**2 for i in range(10)] print(ls) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
dic = {'a':1,'b':2} dic_new = {k**2,v**2 for k,v in dic.items()} print(new_dic) z = zip(['a','b','c'],[1,2,3]) for k,v in z: print(k,v) # 結果 a 1 b 2 c 3 d 4 dic = {k: v ** 2 for k, v in zip(['a', 'b', 'c', 'd'], [1, 2, 3, 4])} # 不能寫這種代碼 print(dic) # {'a': 1, 'b': 4, 'c': 9, 'd': 16}
def func(): return 123 f = func() print(f)
def func(): yield 123 print(456) f = func() print(f) f__iter__ = f.__next__() f__iter__ = f.__next__()
yield:函數
提供一種自定義迭代器的方式code
yield能夠暫停住函數,並提供當前的返回值對象
yield和return:ip
相同點:二者都是在函數內部使用,均可以返回值,而且返回值沒有類型和個數的限制it
不一樣點:return只能返回一次之;yield能夠返回屢次值class
5、生成器表達式yield
列題:迭代器
1.用生成器實現range方法
def range(n): i = 0 while i < n: yield i += 1 for i in range(10) print(i)
2.用生成器實現一個帶有步長的range方法
def range(*args): ls = list(args) if len(ls) == 3: while ls[0]<ls[1]: yield ls[0] ls[0] += ls[2] elif len(ls) == 1: i = 0 while i < ls[0]: yield i i += 1 for i in range(10): print(i)