将元素插入列表/索引的最后位置时出现问题?

J.D*_*Doe 0 python iteration list-comprehension python-3.x

我有一个这样的清单:

[[['apple', 'bannana', 'lemon', 'watermelon'], ['apple', 'orange', 'peach', 'bannana']],
[['apple', 'orange', 'watermelon', 'peach'], ['apple', 'grapes', 'peach', 'bannana']],
[['apple', 'orange', 'lemon', 'grapes'], ['apple', 'bannana', 'lemon', 'watermelon']]]
Run Code Online (Sandbox Code Playgroud)

如何在第一个子列表的最后位置添加一个新元素,例如“ hi”字符串?

例如:

[[['apple', 'bannana', 'lemon', 'watermelon', 'hi'], ['apple', 'orange', 'peach', 'bannana']],
[['apple', 'orange', 'watermelon', 'peach', 'hi'], ['apple', 'grapes', 'peach', 'bannana']],
[['apple', 'orange', 'lemon', 'grapes', 'hi'], ['apple', 'bannana', 'lemon', 'watermelon']]]
Run Code Online (Sandbox Code Playgroud)

我试图重复和重建列表。但是,由于某种原因,要多次添加新字符串:

 for i in l:
     i[0].insert(len(i[0]), 'hi')
 print(i[0])
Run Code Online (Sandbox Code Playgroud)

还有其他Python方式可以做到这一点吗?我不想要的是最终用更多列表重建原始列表。

Sha*_*ger 5

list.insert是的概括list.append,可以将元素插入任何位置(并且在append摊销O(1)复杂性的地方效率相对较低)。如果您只想在的末尾“插入” list,请append改用:

for i in l:
    i[0].append('hi')
Run Code Online (Sandbox Code Playgroud)

如果l lists始终由两个项目组成,则可以使用可迭代的拆包来避免建立索引(并且理想情况下,为每个部分提供一个有用的名称,而不仅仅是i),例如:

for part1, part2 in l:  # Or since you never use part2, just for part1, _ in l:
    part1.append('hi')
Run Code Online (Sandbox Code Playgroud)