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

歡迎訪問 生活随笔!

生活随笔

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

python

Python:每日一题001

發布時間:2025/3/15 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python:每日一题001 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

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

**程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去 掉不滿足條件的排列。

?

個人解題思路

利用排列組合知識算出總共有4X3X2= 24個數,構造每個數加入列表中,打印輸出。

import randomli = ["1","2","3","4"]all_sum_num = 4*4*4new_sum_list = []for i in range(all_sum_num):choose_li = random.sample(li,3)new_num_str = "".join(choose_li)new_sum_list.append(new_num_str)num_set = set(new_sum_list)num_str_list = list(num_set)print(num_str_list)print(len(num_str_list))

  

分析:這種寫法有個漏洞,就是隨機取出的3個數并不能完全取完所有可能的數,造成結果不唯一,每次運行程序可能結果都不一致。

?

參考解答方法:

li = []for i in range(1,5):for j in range(1,5):for k in range(1,5):if i != k and i != j and j != k:num = i*100 + j*10 + kli.append(num)?print(li)print(len(li))

  

分析:用3個for循環,加上if條件判斷,將產生的數加入列表即可

上述代碼可以繼續精簡

li1 = [1,2,3,4]li2 = [a*100 + b*10 +c for a in li1 for b in li1 for c in li1 if a != b and a != c and b != c]print(li2)print(len(li2))

  

分析:采用列表解析式,分別對百位、十位、個位的數字進行生成并合成列表的元素。

?

?

相關知識:

列表解析式

列表解析式,也可以叫列表推導式

?

語法


[expression for iter_var in iterable1]
?
?
?
[expression for iter_var2 in iterable2 ...
?
? ? ? ? ? ? ? ? ? for iter_varN in iterableN]
?
?
[expression for iter_var in iterable1
?
? ? ? ? ? ? ? ? ? if condition]

列表解析式是將一個可迭代對象(如列表)轉換成另一個列表的工具。在轉換過程中,可以指定元素必須符合某一條件,并按照指定的表達式進行轉換,才能添加至新的列表中。

例子1

#生成1*1,2*2,3*3,4*4,5*5,6*6,9*9的序列li1 = [x*x for x in range(1,11)]print(li1)

  

例子2

使用兩層循環的情況

li1 = [m+n for m in range(3) for n in range(2)]print(li1)?#li1的列表解析式等價于下面的嵌套for循環,即m是來自于第一個for循環,n的數值是來自于第二個for循環li2 = []for i in range(3):for j in range(2):num = i+jli2.append(num)print(li2)

  

例子3

#獲取列表中嵌套列表的元素,生成一個無嵌套的新列表li3=[[1,2],[3,4,5],[6,7],[8]]print([x for i in li3 for x in i])

  

例子4

# 獲取兩個列表對應位的乘積lia=[2,3,4,5]lib=[3,4,5,6]zip_li = zip(lia,lib)print(zip_li) #這里產生的zip對象是兩個一一對應的元組,可以用for循環取出來print([i*j for i,j in zip(lia,lib)])

  

例子5

# 獲取文本中所有單詞的第1個字符text = "Alibaba founder Jack Ma laughs off AC Milan football club purchase rumors"first_charts=[word[0] for word in text.split()]print(first_charts)

  

例子6

列表生成式加三元運算

# 將列表中所有能轉化為數字的字符串轉化為數字lix = ['1','2','3','i','8']liy = [int(x)if x.isdigit()else x for x in lix]print(liy)

?

例子7

# 將列表中小于5的數*10lic = [1,3,4,10,18]print([x*10 for x in lic if x < 5 ])#注意這里是列表解析式,只是加上了條件判斷,注意與列表解析式加三元運算的區別,這里加不了elseprint([x*10 if x < 5 else x for x in lic])#也可以改寫成列表解析加三元運算

  

(本文編號001,首發于2018年9月11日,修改于2018年9月12日)

?

?

轉載于:https://www.cnblogs.com/Nicholas0707/p/9630924.html

總結

以上是生活随笔為你收集整理的Python:每日一题001的全部內容,希望文章能夠幫你解決所遇到的問題。

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