1. 程式人生 > >Python入門必刷題目

Python入門必刷題目

Python入門必刷題目

 

最近一直在自學python,剛學習完基礎知識,但一看到題目,就兩眼一抹黑,實在是懷疑自己有沒有學過python。向一些python大神請教,給的建議都是要多接觸專案,在專案中學習。下面我就把自己在leetcode上做的一些簡單但又不錯的題目分享給大家,希望入門的小夥伴們刷一下,大神自動忽略哈。

Python入門必刷題目

 

Python入門必刷題目

 

1.能被3或5整除的1000以內的數字和。

方法一:

sum = 0
for i in range(1,1000):
 if i % 3== 0 or i % 5 == 0:
 sum = sum + i
 
print(sum)

這個方法程式碼簡單,也很容易理解,但是執行的效率低。雖然自己是一個小白,但也要有一顆成為大神的心,經過自己各種嘗試,於是有了第二種方法。

方法二:

在1-1000中,3的倍數最小的是3,最大的是999。5的倍數最小的是5,最大的是995。3和5的倍數其中肯定有交集,而他們肯定是15的倍數,那麼,15的倍數最小的是15,最大的是990。所以,我們要的答案應該是:3的倍數和+5的倍數和-15的倍數的和(交集)。

def sum_mod(min,max):
 return(max/min)*(min+max)/2
print(sum_mod(3,999)+sum_mod(5,995)-sum_mod(15,990))

2.在一個數組裡面移除指定的數字,並返回一個從大到小排序的新陣列。比如:nums=[1,6,6,3,6,2,10,2,100],remove_num=6,要求返回時nums=[1,2,3,10,100]。

方法一:

nums = [1,6,6,3,6,2,10,2,100]
while 6 in nums:
 nums.remove(6)
 
print(nums)

在這裡我們用到了while迴圈。因為要刪除的值在列表中出現多次,就需要使用迴圈來判斷是否刪除了所有這樣的值。

方法二:

>>> nums = [1, 6, 6, 3, 6, 2, 10, 2, 100]
>>> newnums = list(filter(lambda x:x!=6, nums))
>>> print(sorted(newnums,reverse=True))

該方法中用到了python內建函式filter(),它主要用於過濾序列,過濾掉不符合條件的元素,返回一個迭代器物件,如果要轉換為列表,可以用list()來轉換。

函式filter()的語法是:filter(function,iterable),function——判斷函式;iterable——可迭代物件。

此外,這種方法中還用到了lambda()函式。Lambda表示匿名函式,冒號前面的x表示函式引數匿名函式有限制,只能有一個表示式,不用寫return,返回值就是該表示式的結果。

方法還使用了sorted()對列表進行臨時排序。函式sorted()能夠按特定順序顯示列表,同時不影響它們在列表中的原始排列順序。

但需要注意的是,呼叫函式sorted()後,列表元素排列順序並沒有變。如果要與字母相反順序顯示列表,可向函式sorted()傳遞引數reverse=True。

3.從排序好的任意組列表裡面刪除重複元素(你不知道列表裡面有多少個重複的元素)。比如:nums=[1,3,3,5,5,8,10,10,100],處理完之後是[1,3,5,8,10,100]。

nums = [1,3,3,5,5,8,10,10,100,100]

print(sorted(set(nums)))

答案中用到set()函式。Set()函式建立一個無序不重複元素集,可進行關係測試,刪除重複資料,還可以計算交集、差集、並集等。函式的語法是:set([iterable]),iterable——可迭代的物件,該函式會返回一個新的集合物件。

4.從排序的數組裡面,刪除重複的元素。重複的數字最多隻能出現2次。nums=[1,1,1,2,2,3],要求返回nums=[1,1,2,2,3]。

def question4(nums=[1,1,1,2,2,3]):
 from collections import Counter
 print(Counter(nums))
 for k,v in Counter(nums).items():
 if v > 2:
 nums.remove(k)
 
 print(nums)
 
question4(nums=[1,1,1,2,2,3])

上述方法用到了python標準庫——collections模組的Counter類。

collections模組自python2.4版本開始被引入,包含了dict、set、list、tuple以外的一些特殊的容器型別。

Counter類的目的是用來跟蹤值出現的次數。它是一個無序的容器型別,以字典的鍵值對形成儲存,其中元素作為key,其計數作為vaule。計數值可以是任意的Interger(包括0和負數)。

通過實戰來提高自己的功力,我覺得是一個很好的方法,但是不要貪多方面突破。要從一個點突破,以戰養練,以練養戰。我也是一個python小白,自己才疏學淺,很多地方不懂,如果有寫的不到位的地方,歡迎小夥伴們拍磚。

Python入門必刷題目