玩命加载中...
### 10. 复制list
这里的‘复制’有两种不同的含义和效果:
一种是对于`list_1=[a, b, c]`,我们如何得到`list_2=[a, b, c, a, b, c, a, b, c]`,也就是将`list_1`重复多次。
```python
my_list = ['data', 'science', 'sofasofa']
print my_list
# 将my_list重复三次
new_list = my_list * 3
print new_list
new_list = 3 * my_list
print new_list
#另外一个例子
print range(4) * 3
```
另一种是对于`list_1=[a, b, c]`,我们如何得到`list_2=[a, b, c]`。也就是说生成一个新的list,和原来的list一模一样。**此时,我们需要格外注意:**复制地址与复制数值的区别。
下面的例子是地址的复制,也就是说两个变量同时指向内存中的同一个list。当其中一个被更改,例外一个也会被更改。
```python
list_1 = [1, 3, 5]
list_2 = list_1
print 'list_1', list_1
print 'list_2', list_2
list_1[1] = 99
print 'list_1', list_1
# 虽然赋值操作是对list_1进行的,但是list_2也同样被改变了。
print 'list_2', list_2
#同样,如果我们对list_2做更改,list_1也会被改变
list_2 += [999]
print 'list_2', list_2
print 'list_1', list_1
```
当我们只需要复制数值而非地址时,我们可以使用`list_2 = list(list_1)`或者`list_2 = list_1[:]`来完成。例子如下:
```python
# list(list_1)
list_1 = [1, 3, 5]
list_2 = list(list_1)
print 'list_1', list_1
print 'list_2', list_2
list_1[1] = 99
print 'list_1', list_1
print 'list_2', list_2
# list_1[:]
list_1 = [1, 3, 5]
list_2 = list_1[:]
print 'list_1', list_1
print 'list_2', list_2
list_1 += [99]
print 'list_1', list_1
print 'list_2', list_2
```
### 11. 其他常用操作
`sum(my_list)`:对list中的元素求和。
```python
print sum(range(10))
print sum(range(0, 10, 2))
```
`my_list.reverse()`:对list取逆,等同于`my_list = my_list[::-1]`。
```python
my_list = ['Taiwan', 'is', 'a', 'part', 'of', 'China.']
print my_list
my_list.reverse()
print my_list
```
`my_list.count(a)`:返回my_list中a的个数。
```python
my_list = ['Jiangsu', 'Anhui', 'Jiangsu', 'Guangdong', 'Taiwan', 'Shandong']
print my_list.count('Jiangsu')
print my_list.count('Anhui')
print my_list.count('California')
```
`my_list.sort()`:对my_list元素进行排序。如果是数值,按照从小到大的顺序;若是字符,按照首字母顺序排列。
```python
#数值
my_list = [1, 3, 9, 2, 4, 8]
print my_list
my_list.sort()
print my_list
#字符串
my_list = ['Jiangsu', 'Anhui', 'Jiangsu', 'Guangdong', 'Taiwan', 'Shandong']
print my_list
my_list.sort()
print my_list
```