列表分割
就是有一个列表,像这样:l = 现在想做的就是把他分割成由1打头的小列表,像这样
[, , , , ]这该怎么办{:10_277:}
用高阶函数reduce 如图 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))
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 20:16 编辑
应该是在审核,不知道为啥
qq1151985918 发表于 2021-4-11 19:55
应该是在审核,不知道为啥
没看懂{:10_266:} kogawananari 发表于 2021-4-11 19:46
用高阶函数reduce
能详细说说么 柿子饼同学 发表于 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)) #[, , , , ]
沙雕写法
>>> lst = ''.join(map(str, l)).split('1')
>>> res = )])) for i in range(len(lst))]
>>> res
[, , , , ] 柿子饼同学 发表于 2021-4-11 20:00
没看懂
before 其实是我假设的 如果原始列表 lst 不是ls == 1而做的
其他的就是加个标记 flg
首先数出 lst 有几个 1 就在 res 创建几个 空列表
然后每次i == 1就让 flg +1
就是这样 柿子饼同学 发表于 2021-4-11 20:00
没看懂
我给你回复了,没显示出来,可能又在审核,你自己研究下吧。
before 的存在是我假设 如果 lst 不等于1 而设置的 本帖最后由 qq1151985918 于 2021-4-11 20:29 编辑
qiuyouzhi 发表于 2021-4-11 20:15
沙雕写法
兄弟你这个不太靠谱吧?如果元素不是1位数而是2位数3位数呢?
l =
还行吗?
如果里面的元素包含1比如101可还行?
l = 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]