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

歡迎訪問 生活随笔!

生活随笔

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

python

Python-100 | 练习题 01 列表推导式

發布時間:2023/12/10 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python-100 | 练习题 01 列表推导式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近打算好好練習下 python,因此找到一個練習題網站,打算每周練習 3-5 題吧。

http://www.runoob.com/python/python-100-examples.html

另外,這個網站其實也還有 Python 的教程,從基礎到高級的知識都有。


Example-1 三位數組合

題目:有四個數字:1、2、3、4,能組成多少個互不相同且無重復數字的三位數?各是多少?

思路

最簡單的方法,就是窮舉法了,分別求出在百位、十位、個位上的數字,然后剔除出現重復數字的組合,剩余的就是答案了。

代碼實現

直接代碼實現如下:

def?create_three_digits(number_start=1,?number_end=4):'''給定指定數字范圍(比如1到4),求可以組成多少個無重復的三位數:param?number_start:?起始數字:param?number_end:?結束數字:return:?返回數量,以及可能的三位數的列表'''count?=?0result_list?=?list()for?i?in?range(number_start,?number_end?+?1):for?j?in?range(number_start,?number_end?+?1):for?k?in?range(number_start,?number_end?+?1):if?(i?!=?j)?and?(i?!=?k)?and?(j?!=?k):count?+=?1result_list.append(str(i)?+?str(j)?+?str(k))return?count,?result_list

寫得更加簡便點,可以采用列表推導式:

def?create_three_digits2(number_start=1,?number_end=4):'''采用列表推導式實現:param?number_start::param?number_end::return:'''return?[str(i)?+?str(j)?+?str(k)?for?i?in?range(number_start,?number_end?+?1)?for?j?inrange(number_start,?number_end?+?1)?for?k?inrange(number_start,?number_end?+?1)?if?(i?!=?j)?and?(i?!=?k)?and?(j?!=?k)]

輸出結果如下,總共有 24 種不同的排列組合。

valid?count=24,?and?they?are: 123 124 132 134 142 143 213 214 231 234 241 243 312 314 321 324 341 342 412 413 421 423 431 432

當然,目前這種代碼實現的時間復雜度是很高的,畢竟是三個for循環。如果有更好的解法,可以在后臺留言,告訴我!

知識點復習--列表推導式

列表推導式(又稱列表解析式)提供了一種簡明扼要的方法來創建列表。

它的結構是在一個中括號里包含一個表達式,然后是一個 for 語句,然后是 0 個或多個 for 或者 if 語句。那個表達式可以是任意的,意思是你可以在列表中放入任意類型的對象。返回結果將是一個新的列表,在這個以 if 和 for 語句為上下文的表達式運行完成之后產生。

用代碼表示列表推導式如下:

variable?=?[out_exp?for?out_exp?in?input_list?if?out_exp?==?2]

一個簡明的例子如下:

multiples?=?[i?for?i?in?range(30)?if?i?%?3?is?0] print(multiples) #?Output:?[0,?3,?6,?9,?12,?15,?18,?21,?24,?27]

那么,什么時候最適合用列表推導式呢?

其實是當你需要使用 for 循環來生成一個新列表。舉個例子,你通常會這樣做:

squared?=?[] for?x?in?range(10):squared.append(x**2)

這時候,采用列表推導式最合適:

squared?=?[x**2?for?x?in?range(10)]

源代碼在:

https://github.com/ccc013/CodesNotes/blob/master/Python_100_examples/example1.py

或者點擊原文,也可以查看源代碼。


參考文章:

  • https://eastlakeside.gitbooks.io/interpy-zh/content/Comprehensions/list-comprehensions.html

歡迎關注我的微信公眾號--機器學習與計算機視覺,或者掃描下方的二維碼,大家一起交流,學習和進步!

往期精彩推薦

學習筆記
  • 機器學習入門系列(1)--機器學習概覽

  • [GAN學習系列] 初識GAN

  • [GAN學習系列2] GAN的起源

  • [GAN學習系列3]采用深度學習和 TensorFlow 實現圖片修復(上)

數學學習筆記
  • 程序員的數學筆記1--進制轉換

  • 程序員的數學筆記2--余數

  • 程序員的數學筆記3--迭代法

Github項目 & 資源教程推薦
  • [Github 項目推薦] 一個更好閱讀和查找論文的網站

  • [資源分享] TensorFlow 官方中文版教程來了

  • 必讀的AI和深度學習博客

  • [教程]一份簡單易懂的 TensorFlow 教程

  • [資源]推薦一些Python書籍和教程,入門和進階的都有!

總結

以上是生活随笔為你收集整理的Python-100 | 练习题 01 列表推导式的全部內容,希望文章能夠幫你解決所遇到的問題。

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