python 基礎篇 14 程程器運算式 內建函數

來源:互聯網
上載者:User

標籤:help   package   cache   names   優點   case   def   pytho   ;內   

昨日內容回顧
    可迭代對象:
        內部含有__iter__方法的就是可迭代對象.
        可迭代對象不能取值,因為內部不含有__next__方法.

    可迭代對象 ---> 迭代器.
        obj.__iter__()
        iter(obj)
    迭代器:
        內部含有__iter__,__next__ 方法的對象.
    迭代器的優點:
        1,節省記憶體.
        2,惰性機制.
        3,單向,無法復原.
    如何判斷可迭代對象,迭代器.
        1,__iter__ in dir(obj)
        2,?

    產生器:
        自己用python代碼寫的迭代器就是產生器.
        產生器的本身就是迭代器.
    def func():
        print(1111)
        count = yield 222
        print(count)
        yield 333
    g_obj = func()
    g_obj.send(666)
    g_obj.__next__()

--------------->>>>>>>>>>>>>本節重點 產生器運算式  列表推導式<<<<<<<<<<<<<<<<<-------------------

 

構建一個列表:[‘python1期‘, ‘python2期‘, ‘python3期‘, ‘python4期‘, ‘python6期‘, ‘python7期‘, ‘python8期‘, ‘python9期‘, ‘python10期‘]

 

l1 = []
for i in range(1,14):
     l1.append(‘python%d期‘ % i)
print(l1)

列表推導式:

# l3 = [ ‘python%s期‘ % i for i in range(1, 14)]
# print(l3)

[變數(加工後的變數) for 變數 in iterable] 迴圈模式

# 優點:
# 1,節省代碼,一行搞定.
# 2,看著高大上.
# 缺點:
# ,不好排錯.
#整體:
# 凡是用列表推導式構造的列表對象,用其他方式都可構建.,

非常複雜的列表,列表推導式是構建不出的,
# 列表推導式比較有魔性.

#  構建一個列表:
# [‘技師0號‘,‘技師1號‘... ‘技師15號‘]
# print([‘技師%s號‘ % i for i in range(16)])
# [‘護士1號‘, ‘護士3號‘,‘護士5號‘, ...,‘護士13號‘]
# print([‘護士%s號‘ % i for i in range(1, 14, 2)])

# 分類:
# [變數(加工後的變數) for 變數 in iterable] 迴圈模式
# [變數(加工後的變數) for 變數 in iterable if 條件] 篩選模式
# 10以內所有數的平方
# print([i*i for i in range(11)])
# 30以內所有能被3整除的數的平方
# print([i**2 for i in range(31) if i % 3 == 0])
# 100 以內所有的奇數.
# print([i for i in range(1,101,2)])
# print([i for i in range(101) if i % 2 == 1])

產生器運算式

 

1.把列表解析的[]換成()得到的就是產生器運算式

 

2.列表解析與產生器運算式都是一種便利的編程方式,只不過產生器運算式更節省記憶體

 

g_obj = (‘python%s期‘ % i for i in range(1,14)) # 迴圈模式
g_obj1 = (‘python%s期‘ % i for i in range(1,14) if i % 2 == 0) # 篩選模式
print(g_obj)
print(g_obj.__next__())
print(g_obj.__next__())
print(g_obj.__next__())
print(g_obj.__next__())
for i in g_obj1:
print(i)

 

# 產生器:兩種方式:
    # 產生器函數. yield
    # 產生器運算式

# 為什麼有產生器:
# 產生器本身是自己用python代碼構建的,這樣就滿足了個人化需求,滿足以後你工作中需要.

 

#把列表names中有兩個"e"的字元取到# names = [[‘Tom‘, ‘Billy‘, ‘Jefferson‘, ‘Andrew‘, ‘Wesley‘, ‘Steven‘, ‘Joe‘],#          [‘Alice‘, ‘Jill‘, ‘Ana‘, ‘Wendy‘, ‘Jennifer‘, ‘Sherry‘, ‘Eva‘]]列表推導式# l2 = [name for i in names for name in i if name.count(‘e‘) == 2]  普通方法:# l1 = []  # for i in names:#     for name in i:#         if name.count(‘e‘) == 2:#             l1.append(name)# print(l1)# print(l2)把mcase中的K,V索引值互換位置# mcase = {‘a‘: 10, ‘b‘: 34}# print({mcase[i]: i for i in mcase})

 

 

 

------>>>>>>>內建函數:

這個東西慢慢學吧,可以按住Ctrl看源碼,也可以help一下,用著就都會了

 

 

1.1範圍相關

 

locals :函數會以字典的類型返回當前位置的全部局部變數。

 

globals:函數以字典的類型返回全部全域變數。

 

a = 1b = 2print(locals())print(globals())# 這兩個一樣,因為是在全域執行的。##########################def func(argv):    c = 2    print(locals())    print(globals())func(3)#這兩個不一樣,locals() {‘argv‘: 3, ‘c‘: 2}#globals() {‘__doc__‘: None, ‘__builtins__‘: <module ‘builtins‘ (built-in)>, ‘__cached__‘: None, ‘__loader__‘: <_frozen_importlib_external.SourceFileLoader object at 0x0000024409148978>, ‘__spec__‘: None, ‘__file__‘: ‘D:/lnh.python/.../內建函數.py‘, ‘func‘: <function func at 0x0000024408CF90D0>, ‘__name__‘: ‘__main__‘, ‘__package__‘: None}

 

1.2.1 字串類型代碼的執行 eval,exec,complie

 

eval(‘2 + 2‘)  # 4
n=81eval("n + 4")  # 85
eval(‘print(666)‘)  # 666

 

exec:執行字串類型的代碼。

 

 s = ‘‘‘
for i in [1,2,3]:
    print(i)
‘‘‘
exec(s)

 

complie沒用,可以不記

其他函數在這我就不一一列舉了,如有需求可找度娘

 

python 基礎篇 14 程程器運算式 內建函數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.