python基础技巧总结(五)
前四期到博客找:https://blog.csdn.net/hebtu666
我們繼續說一些好用的函數
split
Python?split()?通過指定分隔符對字符串進行切片,如果參數 num 有指定值,則僅分隔 num 個子字符串。
語法:
str.split(str="", num=string.count(str))簡化:
str.split("")
結合第四期所學知識,我們可以寫出這一行代碼
print(" ".join(input().split(" ")[::-1]))
實現功能:給定一個句子(只包含字母和空格),將句子中的單詞位置反轉,單詞用空格分割,單詞之間只有一個空格,前后沒有空格。比如:(1)“hello xiao mi” - >“ mi xiao你好“
?
再舉一例:
將兩個整型數組按照升序合并,并且過濾掉重復數組元素
輸入參數:
int*?pArray1?:整型數組1
intiArray1Num:數組1元素個數
int*?pArray2?:整型數組2
intiArray2Num:數組2元素個數
對于python來說,給個數沒什么卵用。
a,b,c,d=input(),list(map(int,input().split())),input(),list(map(int,input().split())) print("".join(map(str,sorted(list(set(b+d))))))?
我們把最近的知識結合起來做一道題:
輸入一個int型整數,按照從右向左的閱讀順序,返回一個不含重復數字的新的整數。
result="" for i in input()[::-1]:if i not in result:result+=i print(result)還有很多具體的簡潔操作,這里就不再舉例子了,多體會吧。
好,我們繼續其它函數。
?
filter
Python內建的filter()函數用于過濾序列。
和map()類似,filter()也接收一個函數和一個序列。和map()不同的是,filter()把傳入的函數依次作用于每個元素,然后根據返回值是True還是False決定保留還是丟棄該元素。
簡單例子,刪掉偶數:
def is_odd(n):return n % 2 == 1list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])) # 結果: [1, 5, 9, 15]我們可以用所學知識實現埃氏篩:
埃氏篩相關知識:https://blog.csdn.net/hebtu666/article/details/81486370
本代碼非原創:
#先構造一個從3開始的奇數序列: def _odd_iter():n = 1while True:n = n + 2yield n #這是一個生成器,并且是一個無限序列。#篩選函數 def _not_divisible(n):return lambda x: x % n > 0 #生成器 def primes():yield 2it = _odd_iter() # 初始序列while True:n = next(it) # 返回序列的第一個數yield nit = filter(_not_divisible(n), it) # 構造新序列利用filter()不斷產生篩選后的新的序列
Iterator是惰性計算的序列,所以我們可以用Python表示“全體自然數”,“全體素數”這樣的序列,而代碼非常簡潔。
?
sorted
復制過來的,因為寫的很好很好,相比之下,我自己寫的太差勁了。
>>> sorted([36, 5, -12, 9, -21]) [-21, -12, 5, 9, 36] #可以接收一個key函數來實現自定義的排序,例如按絕對值大小排序: >>> sorted([36, 5, -12, 9, -21], key=abs) [5, 9, -12, -21, 36]我們再看一個字符串排序的例子:
>>> sorted(['bob', 'about', 'Zoo', 'Credit']) ['Credit', 'Zoo', 'about', 'bob']默認情況下,對字符串排序,是按照ASCII的大小比較的,由于'Z' < 'a',結果,大寫字母Z會排在小寫字母a的前面。
現在,我們提出排序應該忽略大小寫,按照字母序排序。要實現這個算法,不必對現有代碼大加改動,只要我們能用一個key函數把字符串映射為忽略大小寫排序即可。忽略大小寫來比較兩個字符串,實際上就是先把字符串都變成大寫(或者都變成小寫),再比較。
這樣,我們給sorted傳入key函數,即可實現忽略大小寫的排序:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower) ['about', 'bob', 'Credit', 'Zoo']要進行反向排序,不必改動key函數,可以傳入第三個參數reverse=True:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True) ['Zoo', 'Credit', 'bob', 'about']從上述例子可以看出,高階函數的抽象能力是非常強大的,而且,核心代碼可以保持得非常簡潔。
sorted()也是一個高階函數。用sorted()排序的關鍵在于實現一個映射函數。
?
?
基礎技巧總結持續更新。。。。。。
總結
以上是生活随笔為你收集整理的python基础技巧总结(五)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 终于,我读懂了所有Java集合——map
- 下一篇: python基础技巧总结(三)