list是python里非常强大的数据类型

list 复制

1
2
3
4
5
6
7
8
>>> l1=[1,2,3]
>>> l2=l1
>>> l1[0]=10
>>> print l1
[10, 2, 3]
>>> print l2
[10, 2, 3]
>>>

如何复制?

1
2
3
4
5
6
7
8
9
>>> l2=l1[:]
>>> print l2
[10, 2, 3]
>>> l1[0]=24
>>> print l1
[24, 2, 3]
>>> print l2
[10, 2, 3]
>>>

发生了什么? 第一种是指向,其实还是同一个内容。 第二种是复制

本质上的区别

1
2
3
4
5
6
7
8
9
10
>>> l2 = l1
>>> l2 == l1 #值相同
True
>>> l2 is l1 #指向同一个地方
True
>>> l2 = l1[:]
>>> l2 == l1 #值相同
True
>>> l2 is l1 #并不是指向同一个地方
False

list如何添加元素?

1
2
3
4
5
>>> l1=[]
>>> l1[0]="a"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range

为什么? 因为l1等于一个空列表,没有空间。 l1[0]是需要空间的。

我们该怎么让空list存储数据?

list有一写默认的函数

1
l1.append("a")

删除成员的方法

1
2
3
4
5
6
7
8
9
10
11
12
>>> l1.append("b")
>>> l1.append("c")
>>> l1.append("d")
>>> l1.append("b")
>>> print l1
["b", "c", "d","b"]
>>> l1.remove("b")
>>> print l1
["c", "d","b"]
>>> l1.remove("b")
>>> print l1
["c","d"]

还有

l1.pop() 再试一个删除的高级用法

1
2
3
4
5
>>> print l1
[2, 3, 4, 5]
>>> del l1[1:3]
>>> print l1
[2, 5]

如何插入一个元素:

1
2
3
>>> l1.insert(1,67)
>>> print l1
[2, 67, 5]

Comments