zip函數(shù)-求最長公共前綴
用python解決問題的方法有很多:函數(shù)法、暴力法以及一些常見的算法等等,而且python 的很多基礎題用函數(shù)來解決是非??旖莸?。熟練掌握函數(shù)的方法和技巧能夠更好地解決問題,思路更加清晰。
下面以leetcode”最長公共前綴”案例簡單介紹zip函數(shù)的應用。編寫一個函數(shù)來查找字符串數(shù)組中的最長公共前綴。如果不存在公共前綴,返回空字符串 ""
示例:
輸入: ["flower","flow","flight"]
輸出: "fl"
解決方案:
zip()函數(shù)用于將可迭代的對象作為參數(shù),將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的對象,最后需要轉換成list()來輸出列表。zip(*)可以將元組解壓為列表。
代碼示例:
a = [1,2,3]
b = [4,5,6]
print(list(zip(a,b)))
a1,a2 = zip(*zip(a,b))
print(list(a1))
print(list(a2))
[(1, 4), (2, 5), (3, 6)]
[1, 2, 3]
[4, 5, 6]
要解決最長的公共前綴,用zip函數(shù)是最簡單的??梢园演斎氲淖址當?shù)組看成一個壓縮包,用zip(*)對壓縮包進行解壓,再判斷解壓出來的數(shù)組列表是否為重復元素數(shù)組,如果是則返回前綴。
解題思路:
首先給a賦值一個空的字符串""若前綴不存在返回空字符串a(chǎn);
用for循環(huán)對解壓的字符串數(shù)組進行遍歷 ;
set()函數(shù)對解壓數(shù)組求不重復數(shù)組;
用if條件判斷不重復數(shù)組的長度是否為1;
若為1,則將數(shù)組的元素加到a中;
最后返回a。
代碼示例:
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
a = ""
for i in zip(*strs):
if len(set(i)) == 1:
a = a + i[0]
else:
break
return a
結語:
zip()是可迭代對象,使用時必須將其包含在一個list中,才能輸出結果。熟練掌握函數(shù)知識,善于用函數(shù)快速求解問題。Python的函數(shù)有很多,一個一個的去記又很麻煩,所以需要通過實際問題來掌握函數(shù)并巧妙的應用。
好啦!今天的分享到這里就結束了,希望大家持續(xù)關注馬哥教育官網(wǎng)!每天都會有大量優(yōu)質內容與大家分享!版權聲明:轉載文章來自公開網(wǎng)絡,版權歸作者本人所有,推送文章除非無法確認,我們都會注明作者和來源。如果出處有誤或侵犯到原作者權益,請與我們聯(lián)系刪除或授權事宜。