寻求指导以了解lambda-map函数。在下面,我看到文件“ feedback”逐行读取并存储在列表“ feedback”中。我无法理解变量x。我在任何地方都看不到变量“ x”。有人可以帮助我理解该声明吗?谢谢
f = open('feedback.txt','r')
feedback = list(map(lambda x:x[:-1],f.readlines())
f.close()
答案 0 :(得分:2)
map函数将为列表中的每个元素执行给定的函数。
在您的代码中,地图函数将获得lambda x:x[:-1]
。
您可以像这样阅读:对于f.readlines()中的每个x,返回除x的最后一个元素以外的所有内容。
因此x
将是文件的每一行。 lambda x:
会显示为def thing(x):
。
答案 1 :(得分:2)
我用标准功能替换了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()
也许会有所帮助。
答案 2 :(得分:0)
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]
如此:
f('hello') == g('hello') #True ->'hell'
但是g不是我们使用lambda的方式。整个目的是避免分配;)
现在map接受一个函数并将其应用于iteratable:它返回Python 3+中的生成器,因此使用列表将生成器的大小写转换为列表
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
答案 3 :(得分:0)
请记住,虽然在这里解释了lambda,但并不是您的特定示例选择的实现。建议:
f = open('feedback.txt', 'r')
feedback = f.read().splitlines()
f.close()