假设我有一个像下面这样的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)
答案 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