Python 如何拆分嵌套列表中已定义的元素

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'

我是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'], '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']]

啊,太好了,谢谢!我最初尝试过这个,但忘记在原始变量中指定元素。我已经发布了我的主张,这正是您需要的