2016-08-30 135 views
-5

这个python代码是什么意思?新的python。谢谢!这个python代码是什么意思?

benchmark_sets_list = [ 
    '%s: %s' % 
    (set_name, benchmark_sets.BENCHMARK_SETS[set_name]['message']) 
    for set_name in benchmark_sets.BENCHMARK_SETS] 
+0

请问你能提供更多的上下文吗? – DeA

+0

的意思是,有人不知道,如何在Python中编程 – Daniel

+0

你怎么知道的?:) – MartinGGWW

回答

1

这部分...

for set_name in benchmark_sets.BENCHMARK_SETS 

...将抓住从benchmark_sets.BENCHMARK_SETS设定名称,它会继续逐一成set_name变量。

之后,它就能知道来自该行的值...

(set_name, benchmark_sets.BENCHMARK_SETS[set_name]['message']) 

...因为set_name将有一个值。该部分将返回两件事,set_namebenchmark_sets.BENCHMARK_SETS[set_name]['message']。可能这两件事情将是两个字符串。

然后,那些你在这一行看到%s ...

'%s: %s' % 

...将分别set_namebenchmark_sets.BENCHMARK_SETS[set_name]['message']值替换。这将产生一个像这样的字符串:“foo:bar”,其中“foo”的值为set_name,“bar”的值为benchmark_sets.BENCHMARK_SETS[set_name]['message']

为了让你了解那里发生了什么,这是一个简单的例子:

"%s %s %s" % (first_elem, second_elem, third_elem)

该代码将与first_elem第二%ssecond_elem值的值替换第一%s,而第三个%s的值为third_elem

最后,该字符串将被添加到正在构建的列表中。所以,最后你会得到一个或多或少像这样的列表:

["foo: bar", "wop: wap", "bing: bang"] 
+0

谢谢维森特这么多细节!现在我明白了。 其实我的问题是你如何python球员称这种“酷”的方法分配值的列表(或数组)? 你能给我一个教程链接吗? 因为在传统方式中,总是有一个for()或while()循环来做 – MartinGGWW

+0

这就是所谓的“列表理解”,它具有以下语法: 'L = [表达式为序列变量]'。在你的例子中,“表达式”是'“%s:%s”%(...)'部分。然后,你也可以在任何部分使用set_name。我相信你能够将你的示例代码与该语法进行匹配:-)你可以谷歌关于“Python列表理解”,你会发现教程和例子。 –

+0

太棒了!非常感谢!这正是我想知道的。 我只是跳进Python代码,没时间做彻底的学习。它对大多数零件都是可读的。这是一个例外:) – MartinGGWW