【发布时间】:2011-05-24 12:33:09
【问题描述】:
我有列表[0, 1, 2, 3, 4],我想将其添加到[1, 2, 3, 4]。我该怎么做?
【问题讨论】:
我有列表[0, 1, 2, 3, 4],我想将其添加到[1, 2, 3, 4]。我该怎么做?
【问题讨论】:
您可以找到一些有用的列表函数here。
>>> l = ['a', 'b', 'c', 'd']
>>> l.pop(0)
'a'
>>> l
['b', 'c', 'd']
>>>
>>> l = ['a', 'b', 'c', 'd']
>>> del l[0]
>>> l
['b', 'c', 'd']
>>>
这些都修改了您的原始列表。
其他人建议使用切片:
另外,如果你正在执行许多pop(0),你应该看看collections.deque
from collections import deque
>>> l = deque(['a', 'b', 'c', 'd'])
>>> l.popleft()
'a'
>>> l
deque(['b', 'c', 'd'])
【讨论】:
pop(0) 到 200 - 250 ms,使用 deque。非常感谢。
切片:
x = [0,1,2,3,4]
x = x[1:]
这实际上会返回原始的子集,但不会修改它。
【讨论】:
x 是空的,x=x[1:] 将把它留空而不会抱怨。 x.pop(0) 会抛出一个空列表 x。有时抛出是人们想要的:如果列表中至少有一个元素的假设是错误的,那么人们可能希望得到通知。
>>> x = [0, 1, 2, 3, 4]
>>> x.pop(0)
0
更多关于here。
【讨论】:
你会这样做
l = [0, 1, 2, 3, 4]
l.pop(0)
或l = l[1:]
优点和缺点
使用 pop 可以检索值
说x = l.pop(0)
x 将是 0
【讨论】:
使用列表切片,请参阅有关lists 的 Python 教程了解更多详情:
>>> l = [0, 1, 2, 3, 4]
>>> l[1:]
[1, 2, 3, 4]
【讨论】:
然后删除它:
x = [0, 1, 2, 3, 4]
del x[0]
print x
# [1, 2, 3, 4]
【讨论】:
您可以使用list.reverse() 反转列表,然后list.pop() 删除最后一个元素,例如:
l = [0, 1, 2, 3, 4]
l.reverse()
print l
[4, 3, 2, 1, 0]
l.pop()
0
l.pop()
1
l.pop()
2
l.pop()
3
l.pop()
4
【讨论】:
l.pop(0)时为什么会这么复杂?在使用l.pop() 后,您忘记了l.reverse()。您的解决方案性能不佳
您还可以使用list.remove(a[0]) 到pop 列出列表中的第一个元素。
>>>> a=[1,2,3,4,5]
>>>> a.remove(a[0])
>>>> print a
>>>> [2,3,4,5]
【讨论】:
a.remove(a[1-1])?那是另一种方式。
list.remove(a[i]) 删除第i 个元素。对于重复值,它可能会找到具有相同值的较早元素,并删除该元素而不是第 i 个。
有一种称为deque 或双端队列的数据结构,它比列表更快、更高效。您可以使用您的列表并将其转换为双端队列并在其中进行所需的转换。您还可以将双端队列转换回列表。
import collections
mylist = [0, 1, 2, 3, 4]
#make a deque from your list
de = collections.deque(mylist)
#you can remove from a deque from either left side or right side
de.popleft()
print(de)
#you can covert the deque back to list
mylist = list(de)
print(mylist)
Deque 还提供了非常有用的功能,例如将元素插入列表的任一侧或任何特定的索引。您还可以旋转或反转双端队列。试试看!
【讨论】: