2

我只是 python 的初学者,我必须在它的基础上做我的第一个练习,我也有他们的解决方案,但是虽然我在理解其中一些,语句和函数时遇到了一些命令行问题。

这是练习之一:创建一个名为 mixlist 的新空列表。这个新列表将包含颜色列表中两种相邻颜色的颜色混合。颜色列表中的前两种颜色是“红色”和“黄色”。因此,mixlist 中的第一项将是“red-yellow”(红色和黄色的混合)。注意“_”字符。制作一个循环,它会自动填充混音列表。最后,输入 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表示空白,所以 R 看不到它们之间的区别,所以我也没有得到这个标签:" "= xoldxxoldx + "_" + x

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

提前感谢大家的帮助

4

2 回答 2

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:])]
于 2013-10-23T14:47:31.197 回答
2
 count = 0

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

 oldx = " "

oldx始终是“上一项”的值。作者选择在程序中此时声明变量,所以它必须有一些初始值。他们出于某种原因选择了。没关系,它的值在使用之前已经改变了。if后面说“只打印一次oldxcount > 0所以oldx有一个值”。

 for x in colourList:

循环遍历列表。第一次回合,count将是零。

     if count > 0:

如果计数大于零,即不是第一次,而是每隔一次。IE 不对第一个元素执行此操作。

         print oldx + "_" + x

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

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

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

     oldx = x
     count += 1

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

 print mixList

打印出你的新清单。

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

于 2013-10-23T14:34:57.910 回答