理解这个python代码

时间:2013-10-09 21:21:02

标签: python-2.7

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

不幸的是我错了,并且说它全是1。

我对这个程序对if / else语句的具体做法感到困惑。

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

编辑:澄清一下,我不确定条件是什么意思“如果x在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}

3 个答案:

答案 0 :(得分:1)

Python中的

in执行包含检查。它查看右侧操作数以查看它是否包含左侧操作数。

>>> 2 in [1, 2, 4]
True
>>> 3 in [1, 2, 4]
False

答案 1 :(得分:0)

我鼓励你不要将所有内容都翻译成C. Python是完全不同的,并且试图将事物保持在C框架中会使事情变得更难理解。

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

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

看看“in”的作用。对于其余代码也是如此。此外,还有很多关于Python的在线教程,例如Google“潜入Python”。

答案 2 :(得分:0)

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

首先在if-else块中检查元素是否存在..如果它存在,那么你使用元素作为键递增计数。这是你创建一个新的密钥,密钥是元素和默认值为1 ...

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

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

最后,你打印字典打印你的发现.. !!