Python遍历基于条件的列表和计数项

2024-04-25 19:24:25 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个Python列表,如下所示。你知道吗

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

在第5点遍历列表时,我看到“C”再次出现。所以直到'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)

Tags: in列表forifetcitemelselist
1条回答
网友
1楼 · 发布于 2024-04-25 19:24:25

我不知道预期的结果是什么,也不知道这些数字背后的规律是什么。这没什么意义:A<-W -4。这个:A->B->C->D +4:你计算节点数吗?但这里C<-D -1你数“步数”,即箭头?不管怎样,我会试试看,因为它看起来很有趣:

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

相关问题 更多 >

    热门问题