python的内置函数filter,map,zip

一:filter函数(筛选)

filter()函数:
   filter函数能够从可迭代对象(如字典、列表)中筛选某些元素,并生成一个新的迭代器。可迭代对象是一个可以被“遍历”的Python对象,也就是说,它将按顺序返回各元素,这样我们就可以在for循环中使用它。


语法是:
    function是调用过滤规则的函数名,iterable是要过滤的迭代器对象,
    filter(function, iterable)

filter函数的功能:
   规则匹配,就为真。意思就是筛选匹配的数据。

例子一:

方法1:

def names_vowels(x):
    if x[0].lower() in 'aeiou':
        return x


creature_names = ['Sammy', 'Ashley', 'Jo', 'Olly', 'Jackie', 'Charlie']

# creature_names这个列表会一个一个元素传递给names_vowels函数去处理,返回函数处理的值存入filtered_names,由于是creature_names是迭代器,因此存放到filtered_names,这个也是生成器器。可以使用__next__方法一个一个取。

filtered_names = filter(names_vowels, creature_names)

# 可以把filtered_names生成器器转化为列表的形式,生成器的本质其实也是迭代器,列表也是迭代器。
lst01 = list(filtered_names)
print(lst01)



结果:
['Ashley', 'Olly']

方法2:
# filter()中使用lambda函数的方法


creature_names = ['Sammy', 'Ashley', 'Jo', 'Olly', 'Jackie', 'Charlie']


filtered_names = filter(lambda x: x[0].lower() in 'aeiou', creature_names)
print(list(filtered_names))


结果:
['Ashley', 'Olly']
例子二:
  
方法1:

lst02 = ["周芷若", "周星驰", "周润发", "刘德华","张伯通", "周杰伦", "周洋拉拉"]


# lst02中的每个元素,只要是以周开头的,就筛选出这个元素,并且以生成器的存放方式
l2 = filter(lambda x: x.startswith("周"), lst02)

print(list(l2))


结果:
['周芷若', '周星驰', '周润发', '周杰伦', '周洋拉拉']


方法2:
# filter()中使用lambda函数的方法


lst02 = ["周芷若", "周星驰", "周润发", "刘德华","张伯通", "周杰伦", "周洋拉拉"]

l2 = filter(lambda x: x.startswith("周"), lst02)

# l2是生成器,获取可以从通过__next__()方法来分批提取数据。
print(l2.__next__())
print(l2.__next__())

#由于上面取了二次元素,因此下面元素要从第三次,然后第三次以后所有的筛选出来的元素转换成列表
print(list(l2))


结果:

周芷若
周星驰
['周润发', '周杰伦', '周洋拉拉']


总结:
    在filter()函数中,使用lambda函数得到的结果与使用常规函数得到的结果相同。如果所要过滤数据更复杂了,还可能要使用正则表达式,这可能会提高代码的可读性。

二:map函数(映射)

map函数

例子一:
# 使用 Python map 函数将字符串列表转换为整数列表:
list_of_strings = ["5","6","7","8","9", "10"]

result = map(int,list_of_strings)

print(list(result))

输出:
[5, 6, 7, 8, 9, 10]

--------------------------------------------------------------------------------------

语法:
map(insert function here, insert iterable here)

详解原理:

map() :
    只是 Python map 函数的名称,没什么特别的。

insert function here: 
    是你将在函数中写入的空间。在上面的代码示例中,我们使用了 int 函数。我们可以使用另一个内置函数,如 len() ,或者我们可以构建自己的函数并在这里也使用它。

insert iterable here:
     是你将在你选择的可迭代项目中写入的空间。在本例中,我们插入了列表(list_of_strings)。

result:
    是我们存储新转换项目的变量。

让我们转到最后一行代码。同样,它将从内而外执行:

print(list(result))
list() 接收我们新转换的可迭代项,并告诉我们的计算机这些项是列表的一部分。

-----------------------------------------------------------------------------------------
例子二:
# 使用lambda函数

lst03 = [1, 2, 3, 4, 5, 6]

# 冒号前面的含义,比如 item: item * item,冒号前面item是迭代器lst03会一个一个这样传入,传入一个后,冒号后面item * item进行规则换算得出结果返回ls,ls这里是生成器,也是迭代器。
ls = map(lambda item: item * item, lst03)

result = list(ls)

#把上面的生成器以list的形式全部显示出来,否则就是一次取一个元素。
print(result)


结果:
[1, 4, 9, 16, 25, 36]


总结:
    Python map 函数不是遍历字符串列表的每个元素,而是将整个字符串列表转换为数字列表。你节省了内存,并且代码运行得更快。

三:zip函数

zip() 函数

作用:
    将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。我们可以使用 list() 转换来输出列表。

注意:
    如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。


例子一:

dict_one = {'name': 'John', 'last_name': 'Doe', 'job': 'Python Consultant'}
dict_two = {'name': 'Jane', 'last_name': 'Doe', 'job': 'Community Manager'}


# 将某个字典的键值对合并为一个元组。
for (k1, v1), (k2, v2) in zip(dict_one.items(), dict_two.items()):
    print(k1, '->', v1)
    print(k2, '->', v2)


#结果:
name -> John
name -> Jane
last_name -> Doe
last_name -> Doe
job -> Python Consultant
job -> Community Manager


例子二:
total_sales = [52000.00, 51000.00, 48000.00]
prod_cost = [46800.00, 45900.00, 43200.00]

for sales, costs in zip(total_sales, prod_cost):
	profit = sales - costs
	print(f'Total profit: {profit}')


结果:
Total profit: 5200.0
Total profit: 5100.0
Total profit: 4800.0

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是 Python3 内置函数的完整列表: - abs() - all() - any() - ascii() - bin() - bool() - breakpoint() - bytearray() - bytes() - callable() - chr() - classmethod() - compile() - complex() - delattr() - dict() - dir() - divmod() - enumerate() - eval() - exec() - filter() - float() - format() - frozenset() - getattr() - globals() - hasattr() - hash() - help() - hex() - id() - input() - int() - isinstance() - issubclass() - iter() - len() - list() - locals() - map() - max() - memoryview() - min() - next() - object() - oct() - open() - ord() - pow() - print() - property() - range() - repr() - reversed() - round() - set() - setattr() - slice() - sorted() - staticmethod() - str() - sum() - super() - tuple() - type() - vars() - zip() 除此之外,还有一些 Python 内置模块,例如 `math`,`datetime`,等等也包含很多有用的函数。 ### 回答2: Python内置函数是指在Python编程语言中已经定义好的、可以直接使用的函数。以下是Python内置函数的大全表: 数值处理函数: - abs():返回一个数的绝对值。 - divmod():将两个数相除并返回商和余数。 - pow():返回一个数的指定次幂。 - round():将一个数四舍五入到指定的小数位数。 字符串处理函数: - len():返回字符串长度。 - str():将数值转换为字符串。 - format():格式化字符串。 - split():将字符串按照指定的分隔符切片成列表。 列表处理函数: - len():返回列表长度。 - max():返回列表中的最大值。 - min():返回列表中的最小值。 - sum():返回列表中所有元素的和。 字典处理函数: - len():返回字典中键值对的数量。 - keys():返回字典中所有的键。 - values():返回字典中所有的值。 - items():返回字典中所有的键值对。 文件处理函数: - open():打开一个文件并返回文件对象。 - write():向文件中写入内容。 - read():从文件中读取内容。 - close():关闭文件。 其他常用函数: - type():返回对象的类型。 - range():生成一个指定范围的整数序列。 - print():打印输出内容到控制台。 - input():接收控制台输入。 以上是一些常见的Python内置函数,可以在Python的官方文档中找到完整的内置函数列表。 ### 回答3: Python是一种功能强大的编程语言,拥有丰富的内置函数,用于完成各种任务。以下是Python内置函数大全表: 1. 数学函数:比如abs()用于取绝对值,sum()用于求和,pow()用于幂运算等。 2. 字符串函数:比如len()用于计算字符串的长度,str()用于将其他类型转换为字符串,upper()用于将字符串转换为大写等。 3. 列表函数:比如len()用于计算列表的长度,max()用于找出列表中的最大值,sorted()用于对列表进行排序等。 4. 字典函数:比如len()用于计算字典中键值对的个数,keys()用于获取字典中所有的键,values()用于获取字典中所有的值等。 5. 文件函数:比如open()用于打开文件,read()用于读取文件内容,write()用于向文件写入内容等。 6. 类型转换函数:比如int()用于将其他类型转换为整数,float()用于将其他类型转换为浮点数,str()用于将其他类型转换为字符串等。 7. 输入输出函数:比如input()用于获取用户输入内容,print()用于输出内容到控制台。 8. 布尔函数:比如bool()用于将其他类型转换为布尔值,isinstance()用于判断一个对象的类型等。 9. 时间函数:比如time()用于获取当前时间戳,sleep()用于暂停脚本的执行一段时间等。 10. 迭代器函数:比如iter()用于创建一个迭代器对象,next()用于获取迭代器的下一个值等。 以上仅列举了一部分Python内置函数,还有很多其他函数可以根据需要进行查阅。这些内置函数Python编程的基础,掌握它们能够帮助我们更高效地完成各种任务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值