首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将字符串分组为子字符串

将字符串分组为子字符串
EN

Stack Overflow用户
提问于 2018-06-10 04:06:52
回答 2查看 253关注 0票数 0

我需要一些关于这个代码是如何工作的解释。我不明白为什么在for循环中需要'str‘和'grp’。他们在跟踪什么?

代码语言:javascript
复制
from itertools import groupby
print(["".join(grp) for str, grp in groupby('aaacaccccccbbbb')])
EN

回答 2

Stack Overflow用户

发布于 2018-06-10 04:11:23

groupby通过一些key对连续的迭代器进行分组。如果未指定键,则默认的分组谓词是连续的元素应该相同。因此,总而言之,groupby将相同的连续元素组合在一起。

耗尽groupby,您会看到它返回元组:

代码语言:javascript
复制
list(groupby('aaacaccccccbbbb'))

[('a', <itertools._grouper at 0x12f132a58>),
 ('c', <itertools._grouper at 0x12f132d30>),
 ('a', <itertools._grouper at 0x12f132cf8>),
 ('c', <itertools._grouper at 0x12f1b9da0>),
 ('b', <itertools._grouper at 0x12f1a68d0>)]

每个元组是一对<group_key, [group_values_iterator]>,对应于列表理解中的strgrpgrp基本上就是该组中的元素。列表理解耗尽了grp迭代器并将字符连接在一起。

票数 1
EN

Stack Overflow用户

发布于 2018-06-10 04:11:50

不要使用内置变量名:str,int,set,dict,tuple,list,max,min,...

如果有疑问,请将列表理解分成几个部分,并将它们提供给打印报表(How to debug small programs):

代码语言:javascript
复制
from itertools import groupby
grouping = groupby('aaacaccccccbbbb')

for stri, grp in grouping: 
    print(stri)              # key of the grouping
    print(list(grp))         # group (use list to show it instead of the groupingiterable)
    print("")

输出:

代码语言:javascript
复制
a
['a', 'a', 'a']

c
['c']

a
['a']

c
['c', 'c', 'c', 'c', 'c', 'c']

b
['b', 'b', 'b', 'b']

如果你仍然对它有疑问,请阅读API或搜索SO:How do I use Python's itertools.groupby()?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50778096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档