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方式可以做到这一点吗?我不想要的是最终用更多列表重建原始列表。
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)