Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python的groupby()中使用bool作为键函数_Python_List - Fatal编程技术网

在Python的groupby()中使用bool作为键函数

在Python的groupby()中使用bool作为键函数,python,list,Python,List,我正在学习python中的列表,我想知道如何在列表中输入列表,并看到了在列表中输入多个列表的方法: from itertools import groupby values = [0, 1, 2, 3, 4, 5, 351, 0, 1, 2, 3, 4, 5, 6, 750, 0, 1, 2, 3, 4, 559] print([[0]+list(g) for k, g in groupby(values, bool) if k]) 我试图一步一步地执行这个过程,但在打印这个输出之前

我正在学习python中的列表,我想知道如何在列表中输入列表,并看到了在列表中输入多个列表的方法:

 from itertools import groupby
 values = [0, 1, 2, 3, 4, 5, 351, 0, 1, 2, 3, 4, 5, 6, 750, 0, 1, 2, 3, 4, 559]
 print([[0]+list(g) for k, g in groupby(values, bool) if k])
 
我试图一步一步地执行这个过程,但在打印这个输出之前,我不知道bool在检查是真是假:
[[0,1,2,3,4,5,351],[0,1,2,3,3,3,4,5,6,750],[0,1,2,3,4,559]


上面代码的链接:

理解此类问题的最佳方法是剖析它

for k,g in groupby(values,bool):
    if k:
        print(*g)
# output
1 2 3 4 5 351
1 2 3 4 5 6 750
1 2 3 4 559
Python将
bool(0)
视为
False
。因此,基本上,它将
False
之间的所有数字组合在一起,并将它们添加到
[0]
中,从而得到结果<代码>布尔值(任何非0)为真

for k,g in groupby(values,bool):
    print(k)
    print(*g)

#output
False
0
True
1 2 3 4 5 351
False
0
True
1 2 3 4 5 6 750
False
0
True
1 2 3 4 559
注意


我可能会粗略地解释自己,我所说的it将
False
之间的内容分组在一起,是因为它们是
True

您的示例是我对提供给初学者的理解列表答案进行否决的另一个原因。。。
for k,g in groupby(values,bool):
    print(k)
    print(*g)

#output
False
0
True
1 2 3 4 5 351
False
0
True
1 2 3 4 5 6 750
False
0
True
1 2 3 4 559
for k,g in groupby(values,bool):
    print(k)
    if k:
        print([0]+list(g))
# output
False
True
[0, 1, 2, 3, 4, 5, 351]
False
True
[0, 1, 2, 3, 4, 5, 6, 750]
False
True
[0, 1, 2, 3, 4, 559]