首页 > 解决方案 > 关于groupby的使用

问题描述

我试图了解 groupby 是如何工作的。事实上,我尝试解决黑客等级问题(“压缩字符串!”)

当我查看讨论时,有人以书面形式给出了答案

from itertools import groupby

print(*[(len(list(c)), int(k)) for k, c in groupby(input())])

它有效。据我了解,代码将输入转换为迭代器,因此他会遇到并打印他想要的东西。

但是当我把它变成

from itertools import groupby
iter = groupby(input())
print(*[(len(list(c)), int(k)) for k, c in iter])

它什么也不打印。我认为这很奇怪,但本质上是由于缺乏对自己的了解。而且我不太了解python库的解释。

有人可以启发我吗?

谢谢,戈蒂埃

标签: python-3.xitertools

解决方案


在此处输入图像描述 我想知道你如何运行代码?当我在 python3.6 中运行它时,代码是好的

Python 3.6.5 |Anaconda, Inc.| (default, Mar 29 2018, 13:32:41) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from itertools import groupby
>>> print(*[(len(list(c)), int(k)) for k, c in groupby(input())])
111111232768723648
(6, 1) (1, 2) (1, 3) (1, 2) (1, 7) (1, 6) (1, 8) (1, 7) (1, 2) (1, 3) (1, 6) (1, 4) (1, 8)
>>> from itertools import groupby
>>> iter = groupby(input())
1123512433241231
>>> print(*[(len(list(c)), int(k)) for k, c in iter])
(2, 1) (1, 2) (1, 3) (1, 5) (1, 1) (1, 2) (1, 4) (2, 3) (1, 2) (1, 4) (1, 1) (1, 2) (1, 3) (1, 1)
>>>

推荐阅读