
正文
python函数叠加 python 叠加
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Python的5种高级用法
Lambda 函数
Python 函数一般使用 def a_function_name() 样式来定义,但是对于 lambda 函数来说,我们其实根本没为它命名。这是因为 lambda 函数的功能是执行某种简单的表达式或运算,而无需完全定义函数。
Map 函数
Map() 是一种内置的 Python 函数,它可以将函数应用于各种数据结构中的元素,如列表或字典。对于这种运算来说,这是一种非常干净而且可读的执行方式。
Filter 函数
filter 内置函数与 map 函数非常相似,它也将函数应用于序列结构(列表、元组、字典)。二者的关键区别在于 filter() 将只返回应用函数返回 True 的元素。
Itertools 模块
Python 的 Itertools 模块是处理迭代器的工具集合。迭代器是一种可以在 for 循环语句(包括列表、元组和字典)中使用的数据类型。
使用 Itertools 模块中的函数让你可以执行很多迭代器操作,这些操作通常需要多行函数和复杂的列表理解。
Generator 函数
其实,Generator函数是一个类似于迭代器的函数,就是它也可以用在 for 循环语句中。这大大简化了你的代码,而且相比简单的 for 循环,它节省了很多内存。
关于Python的5种高级用法,青藤小编就和您分享到这里了。如果您对python编程有浓厚的兴趣,希望这篇文章可以为您提供帮助。如果您还想了解更多关于python编程的技巧及素材等内容,可以点击本站的其他文章进行学习。
相关问答
Q1: python项目输出到sys和命令行中的不一样
算法岗笔试的编程题往往是规定输入输出格式的。并且为了在线测试通过,得严格遵守示例的输入输出格式。
大致总结了以下几种情况,以Input和sys的readline的使用为主
1、仅需输入一个参数
直接使用Input或readline即可或者用def的方法进行操作
这两者的返回值均为str,用作数字时需转换(见2)
s=input()
import sys
s = sys.stdin.readline()
2、同一行输入几个不同的参数
例:需要获取两个参数m n
s=input()
si=s.split(' ')
n=int(si[0])
m=int(si[1])
使用map函数会更方便一些
m,n = map(int, input().split())
3、同一行输入一组参数
主要是针对批量转成需要的类型(以Int为例)
import sys
x = [int(i) for i in sys.stdin.readline().split()]
x = [int(i) for i in input().split()]
x = list(map(int , input().split()))
上面两个等价,map的用法参见:
4、多行输入不同参数
一种是使用sys里的readlines另一种是多次使用input或readline
例:网易的解救小易问题,第一行输入个数,第二行第三行分别输入横纵坐标
import sys
data = sys.stdin.readlines()
#提取横纵坐标
x = [int(i) for i in data[1].split()]
y = [int(i) for i in data[2].split()]
使用Input或readline的话,直接按之前的方法多行叠加
5、输入矩阵
输入矩阵的话,需要将多行输入的数存在一个二维列表里
例:第一行输入矩阵维度n m,下面输入这个大小的矩阵
try:
n,m = map(int,input().split())
except:
break
a = []
for i in range(n):
b = list(map(int,input().split()))
a.append(b)
注:加上了try except结构,是因为在牛客网写一道矩阵操作的题目时,不加会报错输出为空,但单独调试并没有问题。目前还不清楚这是因为牛客网的bug还是说有这么写的必要。参考了很多题目的正确代码,也只有这一题大家的答案都加上了这个结构。
6、除去不必要的输入
还是以上面的解救小易问题为例,假如规定的输入数据以逗号隔开(之前一直默认空格隔开),那么需要去除掉这些逗号输入
其实也就是split的用法:
上面的split参数一直取空,也就是按默认用空格分割且不用规定分割次数
那么直接在上面的代码中,split(',')即可
7、输出数据的处理
输出往往没有那么多情况,以join的使用为主:
要注意的是,join只能连接字符串,所以要进行格式转换
list=[1,2,3]
print(' '.join(str(i) for i in list ))
如果在前序处理中已经转成字符串,直接使用' '.join(list)即可,如需逗号分隔同理
相关资源:Python中输入和输出(打印)数据实例方法_python输入输出函数实例...
Q2: python函数嵌套问题
虽然觉得这么畸形的逻辑很难有实际应用,大多数都是误用。
还是顺着去解这个试了下...
def fun1(x):
sum=x
def fun2(y):
return sum+y
def fun3(z):
nonlocal sum
sum+=z
return fun2
return fun3
print(fun1(1)(2)(3))
得6
Q3: python zip函数的用法
定义python函数叠加:zip([iterable,
...])
zip()是Python的一个内建函数python函数叠加,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些
tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list
unzip(解压),看下面的例子就明白了python函数叠加:
1
2
3
4
5
6
7
8
9
a
=
[1,2,3]
b
=
[4,5,6]
c
=
[4,5,6,7,8]
zipped
=
zip(a,b)
[(1,
4),
(2,
5),
(3,
6)]
zip(a,c)
[(1,
4),
(2,
5),
(3,
6)]
zip(*zipped)
[(1,
2,
3),
(4,
5,
6)]
对于这个并不是很常用函数,下面举几个例子说明它的用法python函数叠加:
*
二维矩阵变换(矩阵的行列互换)
比如我们有一个由列表描述的二维矩阵
a
=
[[1,
2,
3],
[4,
5,
6],
[7,
8,
9]]
通过python列表推导的方法,我们也能轻易完成这个任务
1
2
[
[row[col]
for
row
in
a]
for
col
in
range(len(a[0]))]
[[1,
4,
7],
[2,
5,
8],
[3,
6,
9]]
另外一种让人困惑的方法就是利用zip函数:
1
2
3
4
5
a
=
[[1,
2,
3],
[4,
5,
6],
[7,
8,
9]]
zip(*a)
[(1,
4,
7),
(2,
5,
8),
(3,
6,
9)]
map(list,zip(*a))
[[1,
4,
7],
[2,
5,
8],
[3,
6,
9]]
这种方法速度更快但也更难以理解,将list看成tuple解压,恰好得到我们“行列互换”的效果,再通过对每个元素应用list()函数,将tuple转换为list
*
以指定概率获取元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import
random
def
random_pick(seq,probabilities):
x
=
random.uniform(0,
1)
cumulative_probability
=
0.0
for
item,
item_probability
in
zip(seq,
probabilities):
cumulative_probability
+=
item_probability
if
x
cumulative_probability:
break
return
item
for
i
in
range(15):
random_pick("abc",[0.1,0.3,0.6])
'c'
'b'
'c'
'c'
'a'
'b'
'c'
'c'
'c'
'a'
'b'
'b'
'c'
'a'
'c'
这个函数有个限制,指定概率的列表必须和元素一一对应,而且和为1,否则这个函数可能不能像预想的那样工作。
稍微解释下,先利用random.uniform()函数生成一个0-1之间的随机数并复制给x,利用zip()函数将元素和python函数叠加他对应的概率打包成tuple,然后将每个元素的概率进行叠加,直到和大于x终止循环
这样,”a”被选中的概率就是x取值位于0-0.1的概率,同理”b”为0.1-0.4,”c”为0.4-1.0,假设x是在0-1之间平均取值的,显然我们的目的已经达到
Q4: Python如何重叠图片?
图片叠加再一起成这种形式(batch,28,28,1)
可以使用numpy库的concatenate函数实现
import numpy as np
a = np.array([[0,1]])
print(a.shape)
b = np.array([[0,1]])
print(b.shape)
print (np.concatenate((a,b),axis = 0).shape)
输出如下:
python函数叠加的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python 叠加、python函数叠加的信息别忘了在本站进行查找喔。







