python中的函数

python中的zip()、map()、set()、enumerate()函数

1、python中的zip()函数:

**zip()**函数是将可以迭代的对象作为参数,将对象中的对应的元素打包成一个个元组,返回这些元组组成的列表。

例:

a = [1,2,3,4]
b = [2,3,4,5] 
c =  [4,1,3,6,7]
zip_1 = zip(a,b)
zip_2 = zip(a,c)
print(zip_1)
print(zip_2)

​ zip_1 的输出为[(1,2),(2,3),(3,4),(4,5)];zip_2的输出为[(1,4),(2,1),(3,3),(4,6)]。

所以可以看出zip()函数的两个特点:1、返回的结果是一个list,即zip_1 = list(zip(a,b))。2、如果输入的list长度不相同,则按照最小长度的返回。

zip()函数中还有zip(*)的用法:

>>>a1,a2 = zip(*zip(a,b))
>>>a1 = [1,2,3,4]
>>>a2 = [2,3,4,5]

**zip(*)**的用法主要是返回数组形式。

nums = ['fllow','flower','frog']
for i in zip(*nums):
    print(i)
('f', 'f', 'f')
('l', 'l', 'r')
('l', 'o', 'o')
('o', 'w', 'g')

2、python中的map()函数:

map() 会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

map(function, iterable, ...)

map() 根据python的版本不同返回不同:

Python 2.x 返回列表。

Python 3.x 返回迭代器


>>>def square(x) :            # 计算平方数
...     return x ** 2
... 
>>> map(square, [1,2,3,4,5])   # 计算列表各个元素的平方
[1, 4, 9, 16, 25]
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
 
# 提供了两个列表,对相同位置的列表数据进行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]

3、python中的set()函数:

set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等.

nums = ["fllow","flower","frog"]
ss = list(map(set,zip(*nums)))
print(ss)
[{'f'}, {'r', 'l'}, {'l', 'o'}, {'w', 'o', 'g'}]

因为删除了重复数据,所以如果想要找到公共前缀只需要寻找列表中长度为一的元素。同时,zip(*)函数,所以返回的值中只能检索到最小的列表长度。

4、python中enumerate()函数:

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

enumerate(sequence, [start=0])
  • sequence – 一个序列、迭代器或其他支持迭代对象。

  • start – 下标起始位置。

    >>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
    >>>list(enumerate(seasons))
    [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
    >>>list(enumerate(seasons, start=1))       # 小标从 1 开始
    [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
    

题目来源:

查找字符串数组中的最长公共前缀 :

class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        if not strs:
            return ""
        ss = list(map(set, zip(*strs)))
        res = ""
        for i, x in enumerate(ss):
            x = list(x)
            if len(x) > 1:
                break
            res = res + x[0]
        return res
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜游神fff

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值