我需要在Python的切片表示法上有一个很好的解释(引用是一个加号).
对我来说,这种符号需要一点点提升.
它看起来非常强大,但我还没有完全了解它.
是否有通过分隔元素将Python中的列表拆分为子列表的简洁而优雅的方法,例如['a', 'delim', 'b']- > [['a'], ['b']]?
这是一个例子:
ldat = ['a','b','c','a','b','c','a','b']
dlim = 'c'
lspl = [] # an elegant python one-liner wanted on this line!
print(lspl) # want: [['a', 'b'], ['a', 'b'], ['a', 'b']]
Run Code Online (Sandbox Code Playgroud)
我已经调查了关于stackoverflow的文档和相关问题 - 下面引用了很多 - 这些都没有回答我的问题,并且总结了我的研究如下:几种方法确实产生了所需的输出,但是冗长而错综复杂,以及发生了什么(分裂了列表)并不是很明显 - 你真的不得不眯着眼睛.
还有更好的方法吗?我主要关注初学者的可读性(例如教学),规范/'Pythonic'方法,其次是最有效的方法(例如,时间速度).理想情况下,答案将解决Python 2.7和3.x.
循环遍历列表并附加到最后一个输出列表或添加新的输出列表.基于包含分隔符的示例,但已更改为排除它.我不确定如何使它成为一个单行,或者如果这甚至是可取的.
lspl = [[]]
for i in ldat:
if i==dlim:
lspl.append([])
else:
lspl[-1].append(i)
print(lspl) # prints: [['a', 'b'], ['a', 'b'], ['a', 'b']]
Run Code Online (Sandbox Code Playgroud)