日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python核心编程 第八章

發布時間:2024/8/26 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python核心编程 第八章 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

===使用項和索引迭代===

使用內建函數 enumerate()函數
nameList = ['Donn', 'Shirley', 'Ben', 'Janice',... 'David', 'Yen', 'Wendy']
for i, eachLee in enumerate(nameList):
... print "%d %s Lee" % (i+1, eachLee)
...
1 Donn Lee
2 Shirley Lee
3 Ben Lee
4 Janice Lee
5 David Lee
6 Yen Lee
7 Wendy Lee

與序列有關的內建函數

xrange()類似range(),使用的情景是一個用于很大范圍的列表,但是不可用于for循環以外的時候
sorted()返回一個已經排序的列表。
reversed()返回一個順序顛倒的序列。
zip():傳入兩個列表,返回一個包含兩個列表的列表。

以前的誤解

continue 語句"立即啟動循環的下一次迭代". 實際上, 當遇到continue 語句時, 程序會終止當前循環,并忽略剩余的語句, 然后回到循環的頂端.
else的其他使用方法。
在循環中使用時, else子句只在循環完成后執行, 也就是說 break 語句也會跳過 else 塊.

迭代器

  • 迭代器是什么:提供類序列對象的類序列接口
  • 為什么使用迭代器:性能增強。創建了迭代接口,而不是隨機對象訪問。代碼更加簡潔。
  • 如何使用迭代器:enumerate(),iter()返回一個迭代器,reversed()返回一個反序訪問的迭代器。還有iterools模塊,有各種迭代器。
    any()和all(),如果迭代器的所有的值都為布爾真的話,返回值為真,感覺沒什么用。
    實際上使用for循環序列的話,會自己生成一個迭代器。

    字典方法的迭代器:dict.iterkeys()通過keys迭代。dict.itervalues()通過values迭代。dict.iteritems()通過key-values來迭代。

    4.迭代器的局限性:不能移動,不能回到開始。不能復制。迭代可變對象,不可以修改對象。

  • 生成器與列表解析

    生成器是列表解析的一個擴展。

  • 列表解析:可以動態的創建列表。簡單,靈活。
    例子:[expr for iter_var in iterable if comdition]
    for循環迭代iterable對象所有的條目,if 是篩選滿足條件的條目,前面的expr應用于序列的每個成員。最后結果值是該表達式的列表。
    例子:map(lambda x: x ** 2, range(6)) 這是一個計算序列成員平方的lmbda函數表達式:

    擴展:

    map(function, list)函數作用是,把list中所有元素都做函數的操作。
    lambda函數表達式,相當于一個單條語句的函數。

  • 上面的例子等效于>>>[x**2 for x in range(6)]
    [0,1,4,9,16,25]
    但是列表解析的效率更高。

    更多的例子:迭代一個三行五列的矩陣。
    [(x+1,y+1) for x in range(3) for y in range(5)]

  • 生成器表達式
    列表解析的一個不足就是必要生成所有的數據, 用以創建整個列表. 這可能對有大量數據的迭
    代器有負面效應.(其實就是占內存) 生成器表達式通過結合列表解析和生成器解決了這個問題.
    生成器表達式:(expr for iter_var in iterable if cond_expr)
    不需要創建新的列表, 直接就可以創建配對. 我們可以使用下面的生成器表達式:
    x_product_pairs = ((i, j) for i in rows for j in cols())
  • 練習

    8–5. 約數. 完成一個名為 getfactors() 的函數. 它接受一個整數作為參數, 返回它所有約數的列表, 包括 1 和它本身,
    def getfactors(number):
    return [x for x in range(1,number+1) if number%x==0]
    列表解析真好用。。
    8–6. 素因子分解. 以剛才練習中的 isprime() 和 getfactors() 函數為基礎編寫一個函
    數, 它接受一個整數作為參數, 返回該整數所有素數因子的列表. 這個過程叫做求素因子分解, 它
    輸出的所有因子之積應該是原來的數字. 注意列表里可能有重復的元素. 例如輸入 20 , 返回結果
    應該是 [2, 2, 5] .

    def getfactors(number):return [x for x in range(1, number+1) if number%x==0] def isprime(number):"判斷是否是素數"return len(getfactors(number)) == 2 def factor_resolve(number):factor = []lists = getfactors(number)lists = [lists[1],lists [-2]]print listsfor i in lists:if isprime(i):factor.append(i)else:factor+=factor_resolve(i)return factor print factor_resolve(20)

    8–7. 全數. 完全數被定義為這樣的數字: 它的約數(不包括它自己)之和為它本身. 例如: 6
    的約數是 1, 2, 3, 因為 1 + 2 + 3 = 6 , 所以 6 被認為是一個完全數. 編寫一個名為 isperfect()的函數,
    它接受一個整數作為參數, 如果這個數字是完全數, 返回 1 ; 否則返回 0 .

    def getfactors(number):return [x for x in range(1, number+1) if number%x==0 and number!=x] def isperfect(number):return sum(getfactors(number))==number print isperfect(6)

    8–8. 階乘. 一個數的階乘被定義為從 1 到該數字所有數字的乘積. N 的階乘簡寫為 N! .
    寫一個函數, 指定 N, 返回 N! 的值.

    def xmul(number):return reduce(lambda x,y:x*y,range(1,number+1)) print xmul(4)

    8–9. Fibonacci 數列. Fibonacci 數列形如 1, 1, 2, 3, 5, 8, 13, 21, 等等. 也就是說,
    下一個值是序列中前兩個值之和. 寫一個函數, 給定 N , 返回第 N 個 Fibonacci 數字. 例如, 第
    1 個 Fibonacci 數字是 1 , 第 6 個是 8 .

    def series(number):number_list = [1,1]for i in range(number-2):number_list.append(number_list[i]+number_list[i+1])#print number_listreturn number_list[number-1] print series(100)

    8–12. (整數)位操作. 編寫一個程序, 用戶給出起始和結束數字后給出一個下面這樣的表格,
    分別顯示出兩個數字間所有整數的十進制, 二進制, 八進制和十六進制表示. 如果字符是可打印的
    ASCII 字符, 也要把它打印出來, 如果沒有一個是可打印字符, 就省略掉 ASCII 那一欄的表頭.

    def number_form(start,stop):number_list = []for i in range(start,stop+1):temporary_list = [i, hex(i), oct(i), bin(i)]try:temporary_list.append(chr(i))except:temporary_list.append(None)number_list.append(temporary_list)return number_list for i in number_form(1,100):print i

    轉載于:https://www.cnblogs.com/jikeboy/p/5911502.html

    總結

    以上是生活随笔為你收集整理的python核心编程 第八章的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。