将字符串分组为子字符串

时间:2018-06-09 20:06:52

标签: python python-3.x for-loop group-by itertools

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

from itertools import groupby
print(["".join(grp) for str, grp in groupby('aaacaccccccbbbb')])

2 个答案:

答案 0 :(得分:1)

Entity account = new Entity("account"); account["name"] = "James Account"; service.Create(account); 将一些groupby的连续迭代器分组。如果未指定任何键,则默认分组谓词是连续元素应该相同。因此,总而言之,key将相同的连续元素组合在一起。

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

groupby

每个元组都是一对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]>strgrp基本上是该组中的元素。列表理解正在耗尽grp迭代器并将字符连接在一起。

答案 1 :(得分:0)

不要将内置插件用作变量名称:$rules = [ 'admin_id' => 'required_without_all:server_id,client_id|exists:admins,id', 'server_id ' => 'required_without_all:admin_id,client_id|exists:servers,id', 'client_id ' => 'required_without_all:server_id,admin_id|exists:clients,id' ];

如果有疑问,请将清单列入其部分并将其提供给打印报表(How to debug small programs):

str,int,set,dict,tuple,list,max,min,...

输出:

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("")

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