Cem*_*mre 17 python split list
我有一个包含各种字符串值的列表.每当我看到,我想拆分列表WORD
.结果将是一个列表列表(将是原始列表的子列表),其中只包含一个WORD
我可以使用循环执行此操作的实例,但是有更多的pythonic方法可以实现此目的吗?
示例= ['A', 'WORD', 'B' , 'C' , 'WORD' , 'D']
结果= [['A'], ['WORD','B','C'],['WORD','D']]
这是我尝试过但它实际上没有达到我想要的,因为它将放入WORD
一个应该在的不同列表:
def split_excel_cells(delimiter, cell_data):
result = []
temp = []
for cell in cell_data:
if cell == delimiter:
temp.append(cell)
result.append(temp)
temp = []
else:
temp.append(cell)
return result
Run Code Online (Sandbox Code Playgroud)
geo*_*org 20
import itertools
lst = ['A', 'WORD', 'B' , 'C' , 'WORD' , 'D']
w = 'WORD'
spl = [list(y) for x, y in itertools.groupby(lst, lambda z: z == w) if not x]
Run Code Online (Sandbox Code Playgroud)
这会创建一个没有分隔符的拆分列表,这对我来说更符合逻辑:
[['A'], ['B', 'C'], ['D']]
Run Code Online (Sandbox Code Playgroud)
如果你坚持要包含分隔符,这应该可以解决问题:
spl = [[]]
for x, y in itertools.groupby(lst, lambda z: z == w):
if x: spl.append([])
spl[-1].extend(y)
Run Code Online (Sandbox Code Playgroud)
NPE*_*NPE 15
我会用一台发电机:
def group(seq, sep):
g = []
for el in seq:
if el == sep:
yield g
g = []
g.append(el)
yield g
ex = ['A', 'WORD', 'B' , 'C' , 'WORD' , 'D']
result = list(group(ex, 'WORD'))
print(result)
Run Code Online (Sandbox Code Playgroud)
这打印
[['A'], ['WORD', 'B', 'C'], ['WORD', 'D']]
Run Code Online (Sandbox Code Playgroud)
代码接受任何iterable,并生成一个iterable(如果你不想,你不必将其压缩成一个列表).
归档时间: |
|
查看次数: |
14281 次 |
最近记录: |