2013-10-09 84 views
1

这段代码在考试中,它询问输出结果如何。了解这个python代码

不幸的是我弄错了,并把它全是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} 
+1

它计算每个值出现在'L'中的次数。 '如果x in d'表示“如果字典中有一个元素d是哪个键是x,那么...” – iamnotmaynard

+0

关于Python的一件好事,或者关于C的一件不好的事情是,一件简单的事情就像'd [x] = d [x] + 1'或'd'中的x需要数千行库代码才能准确地转化为C. – delnan

回答

1

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

>>> 2 in [1, 2, 4] 
True 
>>> 3 in [1, 2, 4] 
False 
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”。

0

主要看这个代码,你正在做的是你在做的没有时代的元素重复在list..you使用字典作为取计数手段的计数的..

第一所有在if-else块中,你正在检查元素是否存在。如果它存在,那么你正在使用元素作为键增加计数。因此,你正在创建一个新的键,键是元素和默认值为1 ...

因此,你遍历所有在列表并检查列表中的每个元素的计数..

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

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