Python: 如何判断一个列表中有多少相同的元素在彼此之后?

Python: How to determine how much same elements in a list are after each other?

对于我们的讲座,我们需要创建一个程序。 现在我们正处于需要帮助的时刻。

假设我们有以下列表:

[['W'], ['B'], ['B'], ['W'], ['B'], ['B'], ['B']]

现在,每个字母('W'、'B')都有一个特定的值 就在两个字母接连出现时,玩家将获得积分。 示例:

在上面的列表中,玩家 'W' 不会得到任何分数,但玩家 'B' 会得到 5 分。因为第二个元素和第三个元素相继得2分,第五个、第六个和第七个元素相继得3分。

我希望大家清楚我在说什么:)

那么,我如何确定彼此之后有多少个元素具有相同的值?

非常感谢!

您可以使用 itertools.groupby 迭代列表中相同元素的 "groups"。只需确定这些组的长度并相应地增加分数即可:

lst = ['W', 'B', 'B', 'W', 'B', 'B', 'B']
scores = {c: 0 for c in set(lst)}
for k, g in itertools.groupby(lst):
    n = len(list(g))
    if n > 1:
        scores[k] += n

(注意:该解决方案故意不完整并使用了略有不同的输入。)

更新:作业似乎结束了;添加了完整代码。