循环和python中的分支

时间:2013-10-23 14:30:01

标签: python loops

我只是python的初学者,我必须先做它的第一个练习,我也有他们的解决方案但是我有一些问题要理解它们中的一些命令行的语句和函数。

这是练习之一:创建一个名为mixlist的新空列表。此新列表将包含颜色列表中两种相邻颜色的颜色混合。颜色列表中的前两种颜色是“红色”和“黄色”。因此,mixlist中的第一项将是“红黄色”(红色和黄色的混合)。注意'_'字符。创建一个循环,自动填充mixlist。最后,输入mixlist查看结果。如果结果错误,您必须更正程序。

这就是答案:

colourList = ['red', 'yellow', 'green', 'white']
mixList = []

count = 0
oldx = " "

for x in colourList:
    if count > 0:
        print oldx + "_" + x
        mixList.append(oldx + "_" + x)
    oldx = x
    count += 1

print mixList

我不理解其中的大部分内容,例如,oldx为什么它在开始时意味着空白" "然后在结尾处是= x所以R不能看到oldxx之间的差异,所以我也没有得到这个结果:oldx + "_" + x

我很困惑,我需要一些帮助...

感谢大家提前帮助

2 个答案:

答案 0 :(得分:5)

请注意,“答案”无用复杂。一个更简单的算法,具有更好的命名和摆脱无用的“计数”变量:

colourList = ['red', 'yellow', 'green', 'white']
mixList = []
prev_colour = None

for current_colour in colourList:
    if prev_colour is not None:
        mix = prev_colour + "_" + current_colour
        print mix
        mixList.append(mix)

    prev_colour = current_colour

print mixList

虽然这可能是最好的“cs 101”版本,但是pythonic版本是单行的:

mixList = ["%s_%s" % pair for pair in zip(colourList, colourList[1:])]

答案 1 :(得分:2)

 count = 0

在循环colourList时保持计数变量。它每次循环都会递增,因此在循环的任何阶段,它的值都是列表中的位置,从零开始。

 oldx = " "

oldx始终是'上一项'的值。作者已选择在程序中的此时声明变量,因此它必须具有一些初始值。他们出于某种原因选择。什么都没关系,它的价值在使用之前就已经改变了。后来的if表示“仅oldx打印count > 0,因此oldx具有值”。

 for x in colourList:

循环浏览列表。第一轮,count将为零。

     if count > 0:

如果count大于零,即不是第一次,而是每隔一次。 I.E.不要为第一个元素执行此操作。

         print oldx + "_" + x

打印最后一个元素加上当前元素。

         mixList.append(oldx + "_" + x)

同样把它放在混音列表上,所以我们在迭代时建立mixlist。

     oldx = x
     count += 1

这个元素将成为下一轮的“最后一个元素”。

 print mixList

打印出新的清单。

一般来说,对于这类问题,如果你有变量并且你不确定它们如何通过程序进行更改,请在进行时将它们打印出来。然后,您可以在值发生变化时跟踪程序的执行情况。