python中有很多的内置函数,我们熟悉以后会有一个比较巧妙的运用,这里讲一个关于zip函数的运用。先说一下zip函数的定义
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
现在举例示范一下zip函数的运用:
语法结构:
zip([iterable, ...])
- iterabl -- 一个或多个迭代器;
a=[1,2,3]
b=[4,5,6]
zip(a,b)
接下来讲一个巧妙运用(力扣上的一道简单题):
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
解决代码如下:
def longestCommonPrefix(self, strs: List[str]) -> str:
res=''
for i in zip(*strs):
if len(set(i))==1:
res+=i[0]
else:
break
return res
解释一下zip(*strs)
nums = ['flower','flow','flight']
for i in zip(*nums):
print(i)
打印结果:
('f', 'f', 'f')
('l', 'l', 'l')
('o', 'o', 'i')
('w', 'w', 'g')
大致的思路是这样的,zip函数会将列表中的每一个字符串的相同位置的字母聚集到一个元组里面,我们就用集合的性质来做处理,如果len(set(i))==1就说明是所有的字符串该位置的字母是相同的,也就是说该字母是公共前缀之一。
最终的结果就是将同一位置 字母相同加到一起就是最大的公共前缀。