Python 如何拆分嵌套列表中已定义的元素
我是Python3的新手,我遇到的问题如下: 我有一个嵌套的字符串列表结构:Python 如何拆分嵌套列表中已定义的元素,python,python-3.x,list,nested,Python,Python 3.x,List,Nested,我是Python3的新手,我遇到的问题如下: 我有一个嵌套的字符串列表结构: lst = [['foo', 'bar foo bar', 'foo bar'], ['foo', 'bar foo bar', 'foo bar'], ['foo', 'bar foo bar', 'foo bar']] 因此,我基本上想要实现的是以每个嵌套列表的元素[1]为例,将其拆分以实现列表中的另一个嵌套: lst = [['foo' , ['bar', 'foo', 'bar'
lst = [['foo', 'bar foo bar', 'foo bar'],
['foo', 'bar foo bar', 'foo bar'],
['foo', 'bar foo bar', 'foo bar']]
因此,我基本上想要实现的是以每个嵌套列表的元素[1]为例,将其拆分以实现列表中的另一个嵌套:
lst = [['foo' , ['bar', 'foo', 'bar'], 'foo bar'],
['foo' , ['bar', 'foo', 'bar'], 'foo bar'],
['foo' , ['bar', 'foo', 'bar'], 'foo bar']]
我使用列表理解来拆分此元素,但在它自己的单独列表中,因此在本例中,每个列表中的原始元素[0]和[2]丢失:
split_lst = [lst[1].split('\n') for lst in split_list]
如何拆分此元素,但将其与所有其他元素一起保留在原始列表中?列表理解有自己的范围。不能使用它就地更改列表的元素 相反,您可以使用
for
循环:
lst = [['foo', 'bar foo bar', 'foo bar'],
['foo', 'bar foo bar', 'foo bar'],
['foo', 'bar foo bar', 'foo bar']]
for item in lst:
item[1] = item[1].split()
print(lst)
[['foo', ['bar', 'foo', 'bar'], 'foo bar'],
['foo', ['bar', 'foo', 'bar'], 'foo bar'],
['foo', ['bar', 'foo', 'bar'], 'foo bar']]
但是,如果您希望使用列表理解,则需要明确地形成列表列表:
res = [[i, j.split(), k] for i, j, k in lst]
我想这就是你需要的,我用的只是列出cmpr和map
[map(lambda x : list(x.split()) if y.index(x)==1 else x, y) for y in lst]
在这种情况下,输入:
lst = [['foo', 'bar foo bar', 'foo bar'],
['foo', 'bar foo bar', 'foo bar'],
['foo', 'bar foo bar', 'foo bar']]
输出为:
[['foo', ['bar', 'foo', 'bar'], 'foo bar'],
['foo', ['bar', 'foo', 'bar'], 'foo bar'],
['foo', ['bar', 'foo', 'bar'], 'foo bar']]
啊,太好了,谢谢!我最初尝试过这个,但忘记在原始变量中指定元素。我已经发布了我的主张,这正是您需要的