如何在python 3中将列表附加到嵌套列表?

sub*_*uba 4 python

如何将列表附加到嵌套列表 python 3?

lst = ["b","f","j"]
nested_lst = [["a","c","d"],["e","g","h"],["i","k","l"]]

for val in range(0,len(nested_lst)):
    nested_lst[val][1] == lst
Run Code Online (Sandbox Code Playgroud)

预期输出:

nested_lst = [["a","b","c","d"],["e","f","g","h"],["i","j","k ","l"]]

yat*_*atu 7

首先让我们来看看你的方法:

for val in range(0,len(nested_lst)):
    nested_lst[val][1] = lst
Run Code Online (Sandbox Code Playgroud)

这里有几件事实际上没有意义。首先,您正在使用==. 请注意,这是一个比较运算符,您应该将其=用于赋值语句。所以这是False在每次迭代时评估,而不是在任何地方分配。其次,您lst在每次迭代时分配整个列表,您真的想同时迭代lst(您必须zip这样做)。

这是使用 for 循环和list appendandextend方法(查看文档以获取有关列表及其方法的更多详细信息)的简单方法:

# generate an empty nested list
out = [[] for i in range(len(nested_lst))]
# [[], [], []]
# use enumerate to index out
for ix, (i,j) in enumerate(zip(lst, nested_lst)):
    out[ix].append(j[0])
    out[ix].append(i)
    out[ix].extend(j[1:])

print(out)
# [['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h'], ['i', 'j', 'k', 'l']]
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用insert列表中的方法,顾名思义,它在给定位置插入一个项目:

for ix,i in enumerate(lst):
    nested_lst[ix].insert(1, i)

print(nested_list)
# [['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h'], ['i', 'j', 'k', 'l']]
Run Code Online (Sandbox Code Playgroud)

现在我这样做的方法是使用列表理解,它在创建列表时非常方便,包括extended iterable unpacking

lst = ["b","f","j"]
nested_lst = [["a","c","d"],["e","g","h"],["i","k","l"]]

[[j, i, *k] for i,(j, *k) in zip(lst, nested_lst)]
# [['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h'], ['i', 'j', 'k', 'l']]
Run Code Online (Sandbox Code Playgroud)