繁体   English   中英

在python中循环和分支

[英]loop and branching in python

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

这是练习之一:创建一个名为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

我不了解其中的大多数内容,例如, oldxoldx为什么它在oldx和结尾处都表示空白" " ,所以= x使得R无法看到oldxx之间的差异,因此我也无法oldx stamment: oldx + "_" + x

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

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

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

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:])]
 count = 0

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

 oldx = " "

oldx始终是'上一项'的值。 作者选择在程序的这一点上声明变量,因此它必须具有一些初始值。 他们选择了 由于某些原因。 什么都没关系,它的价值在使用之前就已经改变了。 if后面说'只打印oldx一次count > 0 ,所以oldx有一个值'。

 for x in colourList:

循环遍历列表。 第一轮, count将为零。

     if count > 0:

如果count大于零,即不是第一轮,而是每隔一个轮。 IE不会为第一个元素执行此操作。

         print oldx + "_" + x

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

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

也把它放在混合列表中,所以我们在迭代时构建mixlist。

     oldx = x
     count += 1

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

 print mixList

打印出新的清单。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM