Python 100 練習題 01 列表推導式

2021-09-11 11:43:04 字數 2454 閱讀 1807

最近打算好好練習下 python,因此找到乙個練習題**,打算每週練習 3-5 題吧。

另外,這個**其實也還有 python 的教程,從基礎到高階的知識都有。

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

思路

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

**實現

直接**實現如下:

def create_three_digits(number_start=1, number_end=4):

''' 給定指定數字範圍(比如1到4),求可以組成多少個無重複的三位數

:param number_start: 起始數字

:param number_end: 結束數字

:return: 返回數量,以及可能的三位數的列表

''' count = 0

result_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 += 1

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 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)]

複製**

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

valid count=24, and they are:

123124

132134

142143

213214

231234

241243

312314

321324

341342

412413

421423

431432

複製**

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

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

它的結構是在乙個中括號裡包含乙個表示式,然後是乙個 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 = [x**2 for x in range(10)]

複製**

源**在:

參考文章:

學習筆記

數學學習筆記

github專案 & 資源教程推薦

python 100道練習題

題目 利用條件運算子的巢狀來完成此題 學習成績 90分的同學用a表示,60 89分之間的用b表示,60分以下的用c表示。usr bin python coding utf 8 defk score if score 90 return a elif score 60 return b else re...

Python100道練習題(不定期更新中)

100道練習題 2020.7.9 筆記 題目1 有四個數字 1 2 3 4,能組成多少個互不相同且無重複數字的三位數?各是多少?def exercise 1 arr for i in range 1,5 for j in range 1,5 for k in range 1,5 num i 100 ...

python書中練習題 python練習題

1 定義乙個空列表,接收從鍵盤輸入的整數,把列表傳給乙個從大到小排序的函式,再輸出排序後的列表的值 listex b 0 a int input 請輸入列表長度 while b a num int input 請輸入字元 b 1 print listex sum 0 for i in range 0...