Python 无法理解lambda映射函数
寻求指导以了解lambda映射函数。在下面,我看到文件“反馈”被逐行读取并存储在“反馈”列表中。我无法理解变量x。我没有看到变量“x”在任何地方声明。有人能帮我理解这份声明吗?提前谢谢Python 无法理解lambda映射函数,python,Python,寻求指导以了解lambda映射函数。在下面,我看到文件“反馈”被逐行读取并存储在“反馈”列表中。我无法理解变量x。我没有看到变量“x”在任何地方声明。有人能帮我理解这份声明吗?提前谢谢 f = open('feedback.txt','r') feedback = list(map(lambda x:x[:-1],f.readlines()) f.close() map函数将为列表中的每个元素执行给定的函数 在您的代码中,map函数将获得lambda x:x[:-1]。 可以这样理解:对于f
f = open('feedback.txt','r')
feedback = list(map(lambda x:x[:-1],f.readlines())
f.close()
map函数将为列表中的每个元素执行给定的函数 在您的代码中,map函数将获得
lambda x:x[:-1]
。
可以这样理解:对于f.readlines()中的每个x,返回除x的最后一个元素之外的所有内容
因此,
x
将是文件的每一行lambda x:
您可以看到def thing(x):
映射函数将为列表中的每个元素执行给定的函数
在您的代码中,map函数将获得lambda x:x[:-1]
。
可以这样理解:对于f.readlines()中的每个x,返回除x的最后一个元素之外的所有内容
因此,
x
将是文件的每一行lambda x:
您可以看到def thing(x):
我用标准函数替换了lambda:
def read_last(x): #x means a line
return x[:-1]
f = open('feedback.txt','r')
feedback = list(map(read_last, f.readlines())
f.close()
也许会有帮助。我用标准函数替换了lambda:
def read_last(x): #x means a line
return x[:-1]
f = open('feedback.txt','r')
feedback = list(map(read_last, f.readlines())
f.close()
也许会有帮助。lambda函数是一个简单的匿名函数,它接受任意数量的参数,但只有一个表达式
lambda arguments : expression
它是匿名的,因为我们没有将其分配给对象,因此它没有名称
示例f和g有些相同:
def f(x):
# take a string and return all but last value
return x[:-1]
g = lambda x: x[:-1]
因此:
但是g不是我们使用lambda的方式。整个目标是避免分配;)
现在map接受一个函数并将其应用于一个可迭代的函数:它在Python3+中返回一个生成器,因此使用一个列表将该生成器的大小写为一个列表
data = ['we are 101','you are 102','they are 103']
print(list(map(lambda x:x[:-1],data)))
#->['we are 10','you are 10','they are 10']
原则上,与传递函数相同:
data = ['we are 101','you are 102','they are 103']
print(list(map(f,data)))
但通常速度更快,令人敬畏。我喜欢lambdaslambda函数是一个简单的匿名函数,它接受任意数量的参数,但只有一个表达式
lambda arguments : expression
它是匿名的,因为我们没有将其分配给对象,因此它没有名称
示例f和g有些相同:
def f(x):
# take a string and return all but last value
return x[:-1]
g = lambda x: x[:-1]
因此:
但是g不是我们使用lambda的方式。整个目标是避免分配;)
现在map接受一个函数并将其应用于一个可迭代的函数:它在Python3+中返回一个生成器,因此使用一个列表将该生成器的大小写为一个列表
data = ['we are 101','you are 102','they are 103']
print(list(map(lambda x:x[:-1],data)))
#->['we are 10','you are 10','they are 10']
原则上,与传递函数相同:
data = ['we are 101','you are 102','they are 103']
print(list(map(f,data)))
但通常速度更快,令人敬畏。我喜欢lambdas请记住,在这里解释lambda是如何解决的,但对于您的特定示例来说,这不是选择的实现。建议:
f = open('feedback.txt', 'r')
feedback = f.read().splitlines()
f.close()
请记住,在这里解释lambda时,它不是特定示例的首选实现。建议:
f = open('feedback.txt', 'r')
feedback = f.read().splitlines()
f.close()
lambda x:
声明了变量。这不是一个好的学习代码,它应该类似于将open('feedback.txt')作为f:feedback=[line.rstrip()表示f中的行]
@jornsharpe我同意。对于Python中的一个noob,我发现很难理解它lambda x:
声明了变量。这不是一个好的代码,应该是类似于的东西,用open('feedback.txt')作为f:feedback=[line.rstrip()代表f中的行]
@jornsharpe,我同意。对于Python中的一个noob,我发现很难理解它,感谢@bob的解释。现在我明白了:)谢谢@bob的解释。现在我明白了:)