如何删除列表中列表中的第一个元素?

我想知道是否可以删除列表中列表中的索引。例如,给定[[1,2,3],[4,5,6],[7,8,9]],我想删除每个列表的第一个元素,使其变为[[2,[5,[8,9]]。我可以执行for循环来慢慢删除它们,但我想知道是否有更有效的方法?

qingyulei 回答:如何删除列表中列表中的第一个元素?

您可以通过遍历列表来完成此操作,然后在内部列表上调用pop()函数。这将删除指定索引处的元素。

test_list = [[1,2,3],[4,5,6],[7,8,9]]

for i in test_list:
    i.pop(0)

print(test_list)

输出:[[2,[5,[8,9]]

,

我想您有两种选择。

您可以使用pop()

for item in list:
    item.pop(0)

或重新创建一个新列表:

list2 = [item[1:] for item in list]
,

对于您示例中的小型list,可以进行类似list.pop(0)的操作:

nested = [[1,9]]
for inner in nested:
    inner.pop(0)  # Remove first element of each inner list

但是,由于list基本上是作为(指针的)数组实现的,因此删除第一个元素意味着所有其他元素都必须向后移一个,如果您的计算机复制了很多(指针), list个很大。另外,使用inner[1:]而不是inner.pop(0)也不能解决问题,因为inner[1:]会创建新的list而不是返回视图。

一种解决方法是使冗余元素作为最后一个元素而不是第一个出现,因此您可以执行inner.pop()来删除最后一个元素。这样就不需要进一步的移位/复制了。

另一种解决方案是将数据结构从list切换到deque(“双端队列”)。它有一个popleft()方法,与pop(0)等效,但速度很快,因为deque支持从两端快速弹出:

import collections
nested = [[1,9]]
nested = [collections.deque(inner) for inner in nested]  # list of deques
for inner in nested:
    inner.popleft()  # Remove first element of each inner list,fast!
本文链接:https://www.f2er.com/3158955.html

大家都在问