程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python 高階編程Day1

編輯:Python

1.元組和列表的原理和操作

計算創建元組和列表所需要的時間:ipython 中使用 timeit

1.1 元組和列表的區別:

在內存占用和運算時間方面,元組比列表都更有優勢。

當內容不發生改變的情況下,優先選用元組;當內容需要改變的情況下,優先選用列表。

1.2 命名元組

collections模塊中的namedtuple函數

namedtuple: 接收兩個參數,第一個創建的類型名稱,第二個列表

from collections import namedtuple
Fruits = namedtuple('Fruits', ['name', 'color', 'size'])
f = Fruits('watermelon', 'green', '3')
print(f.name)
# 輸出結果為: watermelon

1.3 Python的數據類型分為三類:

  • 數值:23
  • 序列:字符串,列表,元組
  • 散列: 字典,集合

2.字典和集合的原理及應用

字典推導式

字典查找值的過程

性能分析:

從時間上比較:集合, 字典,元組,列表

從內存上比較:字典, 集合, 列表,元組

3. 推導式

3.1 列表推導式

將遍歷到的值取到前面

lis_nu = [i for i in range(1,101)]
print(lis_nu)

3.2 字典推導式

dit_nu = {i: i+1 for i in range(10)}
print(dit_nu)
> {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}

3.3 生成器

3.3.1 ()

優勢:節約內存,提高性能

ge = (i for i in range(100))
a = next(ge)
print(a)
> 0

3.3.2 yield

yield 通過next() 取值

3.4 迭代器

迭代器可以通過next()取值

可迭代對象:可以for循環遍歷的都是可迭代對象

將可迭代對象轉換為迭代器:iter(可迭代對象)

生成器是迭代器的一種

3.4.2 send() 函數

def s_d():
for i in range(6):
j = yield i
print(j)
# send: 與生成器進行交互
dd = s_d()
print(next(dd))
print(dd.send(10))
》輸出結果為:
0
10
1

send(num)函數,相當於next()函數,並且send(num)函數傳進去的num值等於 yield i


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved