Python:如何确定列表中的相同元素是多少? [关闭]

问题描述 投票:-2回答:1

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

假设我们有以下列表:

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

现在,每个字母('W','B')都有一个特定的值正好当两个字母相继出现后,玩家才能获得积分。例:

在上面的列表中,玩家'W'不会获得任何积分,但玩家'B'将获得5分。 2点,因为第二元素和第三元素彼此相继,并且因为第五元素,第六元素和第七元素是彼此之后的3个点。

我希望很清楚我在说什么:)

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

非常感谢你!

python list ord
1个回答
1
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.