循环和python中的分支

use*_*782 2 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
Run Code Online (Sandbox Code Playgroud)

我不明白大部分的东西在里面,比如,究竟是oldx为什么它意味着一个空白" ",在开始时,然后在结束时= x使R可以不看之间的差异oldx,并x因此我也没有得到这个stamment:oldx + "_" + x

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

感谢大家提前为您提供帮助

bru*_*ers 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
Run Code Online (Sandbox Code Playgroud)

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

mixList = ["%s_%s" % pair for pair in zip(colourList, colourList[1:])]
Run Code Online (Sandbox Code Playgroud)