柿子饼同学 发表于 2021-4-11 19:08:54

列表分割

就是有一个列表,像这样:
l = 现在想做的就是把他分割成由1打头的小列表,像这样
[, , , , ]这该怎么办{:10_277:}


kogawananari 发表于 2021-4-11 19:46:26

用高阶函数reduce

不是黄瓜是傻瓜 发表于 2021-4-11 19:47:48

如图

qq1151985918 发表于 2021-4-11 19:50:38

l =

def f(lst):
    res = [[] for i in range(lst.count(1))]
    flg = -1
    for i in lst:
      if i == 1:
            flg += 1
      if flg == -1:
            res.append(i)
            continue
      res.append(i)
    return res

print(f(l))

qq1151985918 发表于 2021-4-11 19:51:23

l =

def f(lst):
    res = [[] for i in range(lst.count(1))]
    flg = -1
    for i in lst:
      if i == 1:
            flg += 1
      if flg == -1:
            res.append(i)
            continue
      res.append(i)
    return res

print(f(l))

qq1151985918 发表于 2021-4-11 19:55:00

本帖最后由 qq1151985918 于 2021-4-11 20:16 编辑

应该是在审核,不知道为啥

柿子饼同学 发表于 2021-4-11 20:00:30

qq1151985918 发表于 2021-4-11 19:55
应该是在审核,不知道为啥

没看懂{:10_266:}

柿子饼同学 发表于 2021-4-11 20:01:02

kogawananari 发表于 2021-4-11 19:46
用高阶函数reduce

能详细说说么

kogawananari 发表于 2021-4-11 20:04:48

柿子饼同学 发表于 2021-4-11 20:01
能详细说说么

from functools import reduce

l =

def ss1(li):
    def set_1(a, v):
      a[-1].append(v) if v!=1 else a.append()
      return a

    return list(reduce(set_1, li, []))

print(ss1(l)) #[, , , , ]

qiuyouzhi 发表于 2021-4-11 20:15:42

沙雕写法
>>> lst = ''.join(map(str, l)).split('1')
>>> res = )])) for i in range(len(lst))]
>>> res
[, , , , ]

qq1151985918 发表于 2021-4-11 20:21:53

柿子饼同学 发表于 2021-4-11 20:00
没看懂

before 其实是我假设的 如果原始列表 lst 不是ls == 1而做的
其他的就是加个标记 flg
首先数出 lst 有几个 1 就在 res 创建几个 空列表
然后每次i == 1就让 flg +1
就是这样

qq1151985918 发表于 2021-4-11 20:23:31

柿子饼同学 发表于 2021-4-11 20:00
没看懂

我给你回复了,没显示出来,可能又在审核,你自己研究下吧。

before 的存在是我假设 如果 lst 不等于1 而设置的

qq1151985918 发表于 2021-4-11 20:27:50

本帖最后由 qq1151985918 于 2021-4-11 20:29 编辑

qiuyouzhi 发表于 2021-4-11 20:15
沙雕写法

兄弟你这个不太靠谱吧?如果元素不是1位数而是2位数3位数呢?
l =
还行吗?
如果里面的元素包含1比如101可还行?
l =

傻眼貓咪 发表于 2021-9-5 14:23:56

arr =
res = []
if arr: temp = ]

for n, i in enumerate(arr, start = 1):
    if i == 1:
      res.append(temp)
      temp =
    else:
      temp.append(i)
    if n == len(arr)-1:
      res.append(temp)

print(*res)

页: [1]
查看完整版本: 列表分割