介绍4个大神常用而你不常用的python函数

阅读大概需要3分钟

今天总共说下四个函数:assert,map,filter,reduce

assert

俗称 断言!就是说断言一件事,如果是真,程序继续进行;如果是假,则报错。

怎么用捏?

两种用法

  • assert <condition>
  • assert <condition>, <error message>

第一种

def avg(marks):
    assert len(marks) != 0
    return sum(marks)/len(marks)

mark1 = []
print("Average of mark1:",avg(mark1))

结果为

AssertionError

第二种

def avg(marks):
    assert len(marks) != 0,"List is empty."
    return sum(marks)/len(marks)

mark2 = [55,88,78,90,79]
print("Average of mark2:",avg(mark2))

mark1 = []
print("Average of mark1:",avg(mark1))

结果为

Average of mark2: 78.0
AssertionError: List is empty.

map

很多时候,我们对一个list里的数据进行同一种操作,比如:

items = [1, 2, 3, 4, 5]
squared = []
for i in items:
    squared.append(i**2)

这个时候,就可以用map操作,格式为:

map(function_to_apply, list_input)

具体操作为

items = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, items))

当然list里可以放函数

def multiply(x):
   return (x*x)
def add(x):
   return (x+x)

funcs = [multiply, add]
for i in range(5):
   value = list(map(lambda x: x(i), funcs))
   print(value)

# Output:
# [0, 0]
# [1, 2]
# [4, 4]
# [9, 6]
# [16, 8]

当然也可以进行str2id操作

a = ['5', '2', '3', '4', '5']
print(list(map(int, a)))

# [5,2,3,4,5]

filter

filter函数就是对于给定的条件进行筛选,过滤。

number_list = range(-5, 5)
less_than_zero = list(filter(lambda x: x < 0, number_list))
print(less_than_zero)

# Output: [-5, -4, -3, -2, -1]

这个可以用在神经网络中是否对部分网络进行fine-tune

if self.args.fine_tune is False:
    parameters = filter(lambda p: p.requires_grad, model.parameters())
else:
    parameters = model.parameters()

reduce

reduce就是累计上次的结果,用在当前操作上。比如不用reduce是这样的

product = 1
list = [1, 2, 3, 4]
for num in list:
    product = product * num

# product = 24

用了之后

from functools import reduce
product = reduce((lambda x, y: x * y), [1, 2, 3, 4])

# Output: 24

IELTS a bit

colossal adj. 巨大的;广大的;庞大的

deposit n. 存款 v. 将钱存入银行


原文发布于微信公众号 - 深度学习自然语言处理(zenRRan)

原文发表时间:2018-11-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏desperate633

设计模式之简单工厂模式(Simple Factory Pattern)问题引出建立简单pizza工厂重构PizzaStore类小结

简单工厂模式其实并不是一个设计模式,反而像是一种比较常用的编程习惯!他还有个名字叫静态工厂方法(Static Factory Method)模式。

9040
来自专栏非著名程序员

鸡蛋问题来了,是先有Class还是先有Object?

周末比较无聊,在浏览论坛的时候,偶然看到一个程序猿提问的问题,他时这样提问的:突然想到一个很菜的问题, 倒底先有Object还是先有Class?所有类都是Obj...

21260
来自专栏Java爬坑系列

【JAVA零基础入门系列】Day8 Java的控制流程

  什么是控制流程?简单来说就是控制程序运行逻辑的,因为程序一般而言不会直接一步运行到底,而是需要加上一些判断,一些循环等等。举个栗子,就好比你准备出门买个苹果...

245100
来自专栏web前端教室

JS中值的传递方式 | 前端卧谈会第11期

音频请点此进行收听 音频原文: 今天在segmentfault看到一篇文章,是讲JS传值的方式的,觉得很有价值,想和大家分享一下。 都知道JS中有二种值的传递方...

20460
来自专栏编程

Python入门基础连载(2)数据结构

Python数据结构包括了列表(list),元组(tuple),字典(dict)和集合(set),这些也都可以称之为容器,下面Cooldog就和大家一起学习一下...

20770
来自专栏逸鹏说道

我为NET狂官方面试题-基础篇

最近帮人过一遍C#基础,出了点题目,有需要的同志拿走 答案不唯一,官方答案只供参考,若有错误欢迎提出~ 答案明天发 面向过程 99乘法表 ? 用循环来输出以...

33390
来自专栏liuchengxu

Scala 最佳实践:纯函数

我们所处的是一个命令式编程(imperative programming)的时代,这也是我们为何更喜欢用命令式风格写代码的原因。在我们周围的一切都是可变的。虽然...

9210
来自专栏编程

浅谈如何定义和调用Python的函数

函数是python编程核心内容之一,笔者在本文中主要介绍下函数的概念和基础函数相关知识点。函数是什么?有什么作用、定义函数的方法及如何调用函数。 函数是可以实现...

19150
来自专栏数据小魔方

左手用R右手Python系列13——字符串处理与正则表达式

学习数据分析,掌握一些灵巧的分析工具可以使得数据清洗效率事半功倍,比如在处理非结构化的文本数据时,如果能够了解一下简单的正则表达式,那么你可以免去大量的冗余代码...

39040
来自专栏ACM算法日常

简单计算器(栈的变种)- HDU 1237

测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输...

13610

扫码关注云+社区

领取腾讯云代金券