Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法理解lambda映射函数_Python - Fatal编程技术网

Python 无法理解lambda映射函数

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

寻求指导以了解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.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)))

但通常速度更快,令人敬畏。我喜欢lambdas

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)))

但通常速度更快,令人敬畏。我喜欢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的解释。现在我明白了:)