【问题标题】:Confusion over Lambda functions in this code这段代码中对 Lambda 函数的困惑
【发布时间】:2016-05-03 14:51:15
【问题描述】:

这是我在网上找到的一段开源代码。我试图弄清楚但有一些功能,我在其中的 Lambda 函数方面遇到了特别的麻烦,以及为什么我无法从中打印值。

下面是代码,并注释掉了我尝试过的所有代码行,但最终 u[ 使代码崩溃。我想知道他们为什么会崩溃代码。

有一个打印语句有效,但只在 for 循环中。在 for 循环之外它崩溃了。

fo = open('outp3.txt','w')
with open('C-small-practice.in','r') as fi:
    rr = lambda: fi.readline().strip()
    rrI = lambda: int(rr())
    rrM = lambda: map(int,rr().split())
    #print rr() ## This print statement doesn't work
    #print rrI() ## This print statement doesn't work
    #print rrM() ## This print statement doesn't work
    #T1= rr() ## this doesn't work/crashes the program
    #T2= rrI() ## this doesn't work/crashes the program
    #T3= rrM() ## this doesn't work/crashes the program
    #print T1 ## This print statement doesn't work
    #print T2 ## This print statement doesn't work
    #print T3 ## This print statement doesn't work
    for tc in xrange(rrI()):
        N = rrI()
        #M = rr() ## this doesn't work/crashes the program
        #O = rrM() ## this doesn't work/crashes the program
        print N #this works!
        #print M
        #print O
        A = [rr().split() for _ in xrange(N)]
        zetaans = solve(N,A)
        zeta = "Case #%i: "%(tc+1) + str(zetaans)
        fo.write(zeta+'\n')
fo.close()

这是它使用的输入

3
3
HYDROCARBON COMBUSTION
QUAIL COMBUSTION
QUAIL BEHAVIOR
3
CODE JAM
SPACE JAM
PEARL JAM
2
INTERGALACTIC PLANETARY
PLANETARY INTERGALACTIC

【问题讨论】:

  • 这段代码看起来很痛苦,但似乎有效,“它不起作用”或“它使程序崩溃”并不能真正帮助理解您的问题。
  • 抱歉,我应该提供更多信息。 dejvuth 发现了发生了什么,并在下面给了我解决方案。

标签: python function lambda


【解决方案1】:

rr() 读取一行。

rrI() 读取一行并将其转换为int。因此,for 循环将根据您的输入运行3 次。

每次调用N = rrI(),都会读取下一个数字。然后,rr().split() 被称为N 次。所以,A 是一个长度为N 的列表,其中每个元素本身就是一个列表,对应输入中的一行,并按空格分割成单词。

您会注意到输入文件格式必须与代码完美匹配,即在调用 rrI() 时,您希望看到的是 int,而不是字符串。

添加添加 print rr()print rrI() 会使代码崩溃,因为您还读取了添加行,因此不再遵循输入格式。

【讨论】:

  • 我现在明白了!我习惯于使用“readlines”。它读取所有行。我没有意识到“readline”只读取一行然后移动到下一行,所以每次调用它都会给出不同的答案。
猜你喜欢
  • 2012-10-05
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
  • 2017-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
相关资源
最近更新 更多