Python遍历列表并根据条件计算项目

时间:2014-07-08 11:18:13

标签: python list

假设我有一个像下面这样的Python列表。

list2 = list('ABCDCBEGHGWAOUOV')
['A', 'B', 'C', 'D', 'C', 'B', 'E', 'G', 'H', 'G', 'W', 'A', 'O', 'U', 'O', 'V']

在第5点遍历列表时,我看到' C'正在再次发生。所以直到D' D'它回来后是+4和-1。

A->B->C->D +3
C<-D -1
B<-C -1
B->E->G->H +3
G<-H -1
G->W +1
A<-W -4 etc...

我需要将正向和反向的步骤计为负数。有没有帮助实现这个?

list1 = []
for item in list2:
    if item in list1:
        sum(1 for i in list2)
    else:
        list1.append(item)

1 个答案:

答案 0 :(得分:1)

我不确定预期的输出是什么,或者这些数字背后的规则是什么。这并没有太大的意义:A<-W -4。这个:A->B->C->D +4:你算节点吗?但是这里C<-D -1你计算&#34;步骤&#34;,即箭头?无论如何,我会试一试,因为它看起来很有趣:

from itertools import islice

def get_it(list2):
    moves = []
    buffer = []
    prev = list2[0]

    for current in islice(list2, 1, None):
        el = 2 * (current > prev) - 1
        if buffer and el != buffer[0]:
            moves.append(sum(buffer))
            buffer = []
        buffer.append(el)
        prev = current

    if buffer:
        moves.append(sum(buffer))

    return moves