我需要一些关于此代码如何工作的解释。我不明白是否需要' str'和' grp'在for循环中。他们跟踪的是什么?
from itertools import groupby
print(["".join(grp) for str, grp in groupby('aaacaccccccbbbb')])
答案 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]>
和str
。 grp
基本上是该组中的元素。列表理解正在耗尽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()?