通过循环运行并找到匹配的条件

时间:2012-03-24 07:05:17

标签: python loops conditional-statements

我正在寻找这个问题的答案:
我每次都在对一个条件进行循环测试(如果data[i]为红色),并且当数组的值为红色时,我会打印一些内容,但是如果下一个值(data[i+1])不是' t red,我想在线上的其余部分打印其他东西而不测试下一个点是否为红色。所以我的代码看起来有点像这样。

For i in range (0, 64) :
If data[i] = red :
Print '#'
If data[i+1] != red :
#here i want to print '.' for the rest of the line without testing anything and getting out of the loop
Else : 
print '#'
Else :
print '.'

我不知道该怎么做才能使这段代码发挥作用。

例如,如果在我的数组中有: data [i] = red,data [i + 1] =空白,data [i + 2] =红色。我想删除第二个红色。我想打印剩下的数组空白,而不测试空白后是否为红色。 我将在图像处理中使用该算法。我有两个球,一个在左边,一个在右边。该算法将完全删除右侧的算法。

2 个答案:

答案 0 :(得分:0)

您是否尝试这样做:

data = ['red','','', 'red','red','red','red','', 'red','red','','']

for i in xrange(len(data)):
    try:
        if data[i] == 'red' and data[i+1] == 'red':
            print '#',
        elif data[i] == 'red' and data[i+1] != 'red' :
            print '.',
    except IndexError:
        pass

ouput:
. # # # . # .

答案 1 :(得分:0)

如果'#'打印red,请打印'.'。如果加载了序列red,而不是red,则为阵列的其余部分打印'.'

prev = None
it = iter(data)
for point in it:
    if point == 'red':
       print '#',
    else:
       print '.',
       if prev == 'red': # encounted ['red', 'blank']
          break
    prev = point

for point in it:
    print '.',
print

Example

blank blank red red blank red blank red red
. . # # . . . . .