Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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

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在列表中的每个循环特定int上划分int列表_Python_List_Split - Fatal编程技术网

Python在列表中的每个循环特定int上划分int列表

Python在列表中的每个循环特定int上划分int列表,python,list,split,Python,List,Split,我怎样才能更改这样的列表 [30,20,0,48,20,10,20,0,30] 致: [[30,20],[48,20,10,20],[30]] 每次列表中有一个0时除以它?我尝试了很多方法,但它们都占用了太多的行,没有意义(10行)。我看过很多关于堆栈溢出的列表拆分问题,但我找不到任何有效的方法 编辑: 我在问是否有任何方法可以执行list.split(0)或类似的操作,但答案似乎是没有方法。我想知道我是否可以在一行中完成,或者是否有任何方法可以使用公共模块。我已经试过在多条线路上做了,效果不错

我怎样才能更改这样的列表

[30,20,0,48,20,10,20,0,30]

致:

[[30,20],[48,20,10,20],[30]]

每次列表中有一个
0
时除以它?我尝试了很多方法,但它们都占用了太多的行,没有意义(10行)。我看过很多关于堆栈溢出的列表拆分问题,但我找不到任何有效的方法

编辑:

我在问是否有任何方法可以执行list.split(0)或类似的操作,但答案似乎是没有方法。我想知道我是否可以在一行中完成,或者是否有任何方法可以使用公共模块。我已经试过在多条线路上做了,效果不错,但我觉得不方便

编辑2:

我尝试的代码是:

list = [30,20,0,48,20,10,20,0,30]  #1, 1 list
newlist = []                       #2, 2 lists
addinglist = []                    #3, 3 lists
for x in list:                     #4
    if x == 0:                     #5
        newlist.append(addinglist) #6
        addinglist = []            #7
    else:                          #8
        addinglist.append(x)       #9 
newlist.append(addinglist)         #10
list = newlist                     #11 lines, 3 lists.
print(addinglist)
代码需要11行和3个列表(一个正在修改,另外两个没有用)。

这样做:

x=[10,20,30,0,4,5,6,0,1,1,1,1,1,1,0,1]

output=[]
temp=[]
for i in x:
    if i==0:
        output.append(temp)
        temp=[]
    else:
        temp.append(i)
output.append(temp)
其中,输出为:

[[10, 20, 30], [4, 5, 6], [1, 1, 1, 1, 1, 1], [1]]
代码非常简短,但我确信有更简洁的解决方案。

如前所述:


启动结果列表、启动正在运行的列表、附加到 只要条件为true,就运行列表,并附加 当前列表,每次启动一个新的列表都不是很好 共同任务。请证明你自己也试过 首先

事实上,这是一项非常简单的任务,可以在4行可读的Python代码中完成:

final=[]
for elem in [0]+x:
    if elem == 0: final.append([])
    else: final[-1].append(elem)
其中
x
是您的列表


这个答案的目的不是告诉你怎么做。但是告诉你,如果你有任何相关的代码可以发布(但不一定有效),这个答案会更容易被接受

总之:

  • 记住展示你的研究成果,只是说已经付出了努力并不重要,复制和粘贴你发现/制作的东西并不是那么困难
我想知道我是否可以在一行中完成,或者是否有任何方法可以完成 可以使用通用模块

是的,两个都有。您正在尝试分组数据,因此
itertools
中的
groupby
是您的朋友:

from itertools import groupby

data = [30, 20, 0, 48, 20, 10, 20, 0, 30]

result = [list(group) for non_zero, group in groupby(data, lambda n: n != 0) if non_zero]

print(result)
输出

> python3 test.py
[[30, 20], [48, 20, 10, 20], [30]]
> 

我们使用一个键函数根据数据是否为零来捆绑数据。
变量包含束;
non_zero
变量(aka
key
)是一个布尔值,指示它是否是我们想要的包。

看起来您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只在海报已经试图自己解决问题时才提供帮助。演示这项工作的一个好方法是包括您迄今为止编写的代码(形成一个示例)、示例输入(如果有)、预期输出和实际获得的输出(输出、回溯等)。你提供的细节越多,你可能得到的答案就越多。检查和。启动结果列表、启动运行列表、在条件为真时追加到运行列表,以及每次不符合条件时追加当前列表并启动新列表是一项非常常见的任务。请证明您自己先尝试过。如中所述,请避免回答不清楚、过于宽泛、打字错误、无法复制或重复的问题。写我的代码请求和低工作量的家庭作业问题对于专业编码/辅导服务来说是离题的,更适合。好的问题要坚持,包括一个好问题,要有研究的努力,并且有可能对未来的访问者有用。回答不恰当的问题会使网站导航更加困难,并鼓励进一步回答此类问题,从而损害网站。这会赶走其他自愿提供时间和专业知识的用户。如果这不合适,请告诉我,我将删除/编辑它。@Snootierbabon请记住也将您尝试过的内容放在网站上。如果这个答案对你“帮助太大了”,请回答。这可以缩短为
final=[]
[final.append([]),如果elem==0,则为final[-1]。使用列表理解为[0]+x]
中的elem追加(elem),这将是两行。