问题描述
尝试从2D列表中剥离字符串,但仅在第一列中
我的尝试:
list = [[x.strip('this') for x in y[0]] for y in list]
示例列表:
[["apple this","juice this"],["orange this","lemonade this"],["kiwi this","punch this"]]
想要的结果:
[["apple",["orange",["kiwi","punch this"]]
仅在第一列中加上“ this”,而不是第二列。
最好甚至不检查其他列。
解决方法
使用split()
和zip()
:
ee = [["apple this","juice this"],["orange this","lemonade this"],["kiwi this","punch this"]]
splitted = [x[0].split()[0] for x in ee] # ['apple','orange','kiwi']
later_lst = [x[1] for x in ee] # ['juice this','lemonade this','punch this']
print([list(l) for l in zip(splitted,later_lst)])
输出:
[['apple','juice this'],['orange','lemonade this'],['kiwi','punch this']]
单线:
print([list(l) for l in zip([x[0].split()[0] for x in ee],[x[1] for x in ee])])
编辑:
更短版本:
print([[x[0].split()[0],x[1]] for x in ee])
,
尝试一下
list = [[(x if i else x.strip()) for i,x in enumerate(y)] for y in list]
,
您可以使用
list = [[x.strip('strip this') if j==0 else x for j,x in enumerate(y)] for y in list]
,
您可以尝试一下。这行代码将删除
[[i.replace(' this',''),j] for i,j in a]