程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python 中处理可迭代对象的三种常用方法

hfteth 2025-01-15 13:36:34 技术文章 15 ℃

简单的说,Python 中一个对象只要实现了__iter__() 或 __getitem__() 方法,就成为可迭代(Iterable)的对象,通俗的讲就是这个对象是可数的。常见的可迭代对象包括:列表(list)、元组(tuple)、字典(dict)、集合(set)、字符串(str)等。

下面就说说常用的处理迭代对象(Iterable)的三种方法。

1.zip

zip() 是把几个可迭代对象(Iterable)叠在一起,按照对应0,1,2...的顺序将各个对象的重新分组,组成一个个元组(tuple),最后返回包含这些元组的列表(list)。

在 Python 3.x 中 zip() 返回的是一个对象,如需展示列表,需手动 list() 转换。

a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9, 10]
zz = zip(a, b)
print(list(zz))
# 输出 [(1, 4), (2, 5), (3, 6)]

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。

zz1 = zip(a, c)
print(list(zz1))
# 输出 [(1, 7), (2, 8), (3, 9)]

利用 * 号操作符,可以将元组解压为列表。

x,y = zip(*zz)
print(x)
print(y)
# 输出 
# (1, 2, 3)
# (4, 5, 6)

2.lambda

Python中 lambda 指的是匿名函数,通俗的讲就是我在某处需要处理一些问题,又不想为此去单独定义一个函数,因为用一次就完了,不再用第二次,这个时候就需要这个 Lambda 匿名函数了。

它的写法为:

lambda *arguments(所给的参数)* : *expression(表达式)*

比如参数 a 加 10 ,并返回结果

x = lambda a : a + 10
print(x(5))
# 输出 5

参数 a,b 相乘并返回结果

x = lambda a, b : a * b
print(x(5, 6))
# 输出 30

通常 lambda 与 map 结合来处理可迭代对象。

3. map

Python 中的 map 函数应用于可迭代对象的每一个元素,返回的是一个结果list。 如果有其他的可迭代参数传进来,map 函数则会把每一个参数都以相应的处理函数进行迭代处理。 map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

例如:

a = [1, 2, 3, 4, 5]
print(list(map(str,a)))
# 输出 ['1', '2', '3', '4', '5']

str 是 python 的内置函数,这里是把列表的每个元素变成了str类型,然后以列表的形式返回。 当然也可以传入自定义函数:

def mul(x):
    return x*x
n = [1, 2, 3, 4, 5]
res = map(mul, n)
print(list(res))
# 输出 [1, 4, 9, 16, 25]

这里的自定义函数完全可以用上面提到的匿名函数代替:

res = map(lambda x: x*x, n)

其输出结果是一样的。

Tags:

最近发表
标签列表