1

这段代码在考试中,它询问它的输出是什么。

不幸的是,我弄错了,全是1。

我对这个程序专门用 if/else 语句做什么感到有点困惑。

我是一名 C 程序员,所以如果可能的话,有人可以将 if/else 语句翻译成 C 代码,这样我就可以理解发生了什么。谢谢!

编辑:澄清一下,我不确定条件是什么意思“如果 x in d”

def somefunction(L):
    d = {}

    for x in L:
        if x in d:
            d[x] = d[x] + 1

        else:
            d[x] = 1

    return d

L = [6, 10, -2, 2, 6, 4, -2, 6]
print somefunction(L)


output: {10: 1, 2: 1, 4: 1, -2: 2, 6: 3}
4

3 回答 3

1

in在 Python 中执行包含检查。它查看右边的操作数,看它是否包含左边的操作数。

>>> 2 in [1, 2, 4]
True
>>> 3 in [1, 2, 4]
False
于 2013-10-09T21:23:56.423 回答
0

我鼓励你不要把所有东西都翻译成 C。Python 有很大的不同,试图让事情保持在 C 的思维框架中会让事情变得更难理解。

很棒的一件事是 Python 被解释了,因此您可以键入“python”,然后输入命令以查看它们的作用。您可以在操作事物时检查所有变量。例如,您可以这样做:

L = [6, 10, -2, 2, 6, 4, -2, 6]
for x in L:
    print x

看看“in”做了什么。其余代码也是如此。此外,还有很多关于 Python 的在线教程,例如 Google “Dive into Python”。

于 2013-10-09T22:21:10.043 回答
0

基本上,在这段代码中,你正在做的是计算元素在列表中重复的次数。你正在使用字典作为计数的手段。

首先在 if-else 块中,您正在检查元素是否存在..如果它存在,那么您将使用元素作为键来增加计数..否则您正在创建一个新键,键是元素和默认值为 1...

因此,您遍历整个列表并检查列表中每个元素的计数..

d[i]=j
#i is key,j is value.

最后你通过打印字典来打印你的发现..!!

于 2016-11-04T20:32:19.157 回答