我有一个列表,如下:
list_1 = [1,2,2,3,1,2]
我想创建另一个嵌套列表:
[[1,2,2,1,2],[2,2,3,2]]
第一个嵌套列表仅由1和2组成,因为根据数字顺序,2在1之后,1必须包括在内。 3不在第一个嵌套列表中,因为1之后是2而不是3。
在第二个嵌套列表中,有2个和3个,因为3个在2之后,需要包含2个。 1不存在,因为一个人不会在2之后。
如何在Python 3中实现这一目标?
答案 0 :(得分:2)
list_1 = [1,2,2,3,1,2]
m = max(list_1)
print([[i for i in list_1 if i in [j,j+1] ] for j in range(1,m)])
#[[1, 2, 2, 1, 2], [2, 2, 3, 2]]
#list_1 = [1,2,2,3,1,2,4,2,3,6,5,4]
#->[[1, 2, 2, 1, 2, 2], [2, 2, 3, 2, 2, 3], [3, 4, 3, 4], [4, 5, 4], [6, 5]]
答案 1 :(得分:1)
如果你没有功能性的衬垫,你就可以这样做。
def listsep(lst, sep):
l1 = []
l2 = []
for v in lst:
if v <= sep:
l1.append(v)
if v >= sep:
l2.append(v)
return [l1, l2]
print(listsep([1,2,2,3,1,2], 2))
只要迭代输入并附加到每个列表,如果小于/等于或大于/等于。这只会对输入进行一次迭代。