[TOC]
----
# 列表 (相当于PHP里的索引数组)
参考菜鸟手册
<a href="https://www.runoob.com/python3/python3-list.html" target="_blank">https://www.runoob.com/python3/python3-list.html</a>
- 相当里php里的数组
- 序列中的每个元素都分配一个数字 - 它的位置(索引),第一个索引是0,第二个索引是1,依此类推。
```python
list1 = ['Google', 'Runoob', 1997, 2000];
list2 = [1, 2, 3, 4, 5, 6, 7 ];
print ("list1[0]: ", list1[0]) #list1[0]: Google
print ("list2[1:5]: ", list2[1:5]) #list2[1:5]: [2, 3, 4, 5]
```
## 列表的添加
列表相当于php中的一维数组,里面元素是有序的,可以重复的.
1. 向列表的最后面追加单元数据
列表的追加(向数组的右边追加) `append()`方法
```python
list1 = ['Google', 'Runoob', 'Taobao']
list1.append('Baidu')
print ("更新后的列表 : ", list1) #['Google', 'Runoob', 'Taobao', 'Baidu']
```
2. 向数组后面拼接元素
```python
list1 = ['Google', 'Runoob', 'Taobao']
n = ['a','b','c']
list1 += n
print(list1) #['Google', 'Runoob', 'Taobao', 'a', 'b', 'c']
```
3. `insert()` 函数用于向列表指点任意列表的插入值。
>`insert()`方法 `list.insert(index, obj)`
```python
list1 = ['Google', 'Runoob', 'Taobao']
list1.insert(1, 'Baidu')
print ('列表插入元素后为 : ', list1) #['Google', 'baidu', 'Runoob', 'Taobao']
```
4. `extend()` 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
**extend()方法语法:**
>list.extend(seq)
```python
list1 = ['Google', 'Runoob', 'Taobao']
list2=list(range(5)) # 创建 0-4 的列表
list1.extend(list2) # 扩展列表
print ("扩展后的列表:", list1) # ['Google', 'Runoob', 'Taobao', 0, 1, 2, 3, 4]
```
5.extend 与 append 的区别
- extend 与 append 方法的相似之处在于都是将新接收到参数放置到已有列表的后面。
- 而 extend 方法只能接收 list,且把这个 list 中的每个元素添加到原 list 中。
- 而 append 方法可以接收任意数据类型的参数,并且简单地追加到 list 尾部。
```python
list1 = ['Google', 'Runoob', 'Taobao']
list1.extend(['a','b']) # 扩展列表
print (list1) # ['Google', 'Runoob', 'Taobao', 'a', 'b']
list2 = ['Google', 'Runoob', 'Taobao']
list2.append(['a','b']) # 扩展列表
print (list2) # ['Google', 'Runoob', 'Taobao', ['a', 'b']]
```
<a href="https://www.runoob.com/python3/python3-att-list-extend.html" target="_blank">https://www.runoob.com/python3/python3-att-list-extend.html</a>
## 列表的删除
>方法一:可以使用 del 语句来删除列表的指定元素,如下实例:
```python
list = ['Google', 'Runoob', 1997, 2000]
print ("原始列表 : ", list) #原始列表 : ['Google', 'Runoob', 1997, 2000]
del list[2]
print ("删除第三个元素 : ", list) #删除第三个元素 : ['Google', 'Runoob', 2000]
```
>方法二:`remove()`
**描述**
remove() 函数用于移除列表中某个值的第一个匹配项。
**语法**
remove()方法语法:
`list.remove(obj)`
```python
list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
list1.remove('Taobao')
print ("列表现在为 : ", list1) #列表现在为 : ['Google', 'Runoob', 'Baidu']
list1.remove('Baidu')
print ("列表现在为 : ", list1) #列表现在为 : ['Google', 'Runoob']
```
>方法三:pop(列表索引)
**描述**
pop(列表索引) 函数用于移除列表中某索引的值
不列索引,默认删除最后一个元素
```python
list = ['Google', 'Runoob', 1997, 2000]
list.pop(2)
print(list) #['Google', 'Runoob', 2000]
```
## 列表的更新 指定列表里元素的索引下标重新赋值
>你可以对列表的数据项进行修改或更新,如下所示:
>指定列表里元素的索引下标重新赋值
```python
list = ['Google', 'Runoob', 1997, 2000]
print ("第三个元素为 : ", list[2]) #第三个元素为 : 1997
list[2] = 2001
print ("更新后的第三个元素为 : ", list[2]) #更新后的第三个元素为 : 2001
```
## 列表截取(切片)与拼接
>Python的列表截取与字符串操作类型.
**如下所示:**
>L=['Google', 'Runoob', 'Taobao']
Python 表达式 | 结果 | 描述
---|---|---
L[2] | 'Taobao' | 读取第三个元素
L[-2] | Runoob' | 从右侧开始读取倒数第二个元素: count from the right
L[1:] | ['Runoob', 'Taobao'] | 输出从第二个元素开始后的所有元素
L[:] | ['Google', 'Runoob', 'Taobao'] | 输出所有元素
>拼接
```python
list1 = ['Google', 'Runoob', 'Taobao']
n = ['a','b','c']
list1 += n
print(list1) #['Google', 'Runoob', 'Taobao', 'a', 'b', 'c']
```
## 嵌套列表
>把两个一维列表嵌套成一个两维列表
```python
a = ['Google', 'Runoob', 'Taobao']
b = ['a','b','c']
c = [a,b]
print(c) #[['Google', 'Runoob', 'Taobao'], ['a', 'b', 'c']]
```
## 列表的赋值
>copy()和直接=赋值的区别:
1. 使用=直接赋值,是引用赋值,更改一个,另一个同样会变
1. copy() 则顾名思义,复制一个副本,原值和新复制的变量互不影响
例子:
<a href="https://www.runoob.com/python3/python3-att-list-copy.html" target="_blank
">https://www.runoob.com/python3/python3-att-list-copy.html</a>
```python
# 列表的传值赋值 (原列表a数据值改变,不影响赋值的新列表b)
a=[0,1,2,3,4,5]
# 列表的传值赋值的几种方法
# b=a.copy() #copy()函数传值赋值
# b=a[:] #切片传值赋值
b=a[0:] #切片传值赋值
a[0] = 6
print(a) #[6, 1, 2, 3, 4, 5]
print(b) #[0, 1, 2, 3, 4, 5]
# 列表的引用赋值 (原列表a和新列表c指的是同一个列表在内存里的地址,可以理解为同一个列表起的不同的别名)
# 原列表c数据值改变,新列表b的值也改变
c=[0,1,2,3,4,5]
d=c
c[0] = 6
print(c) #[6, 1, 2, 3, 4, 5]
print(d) #[6, 1, 2, 3, 4, 5]
```
## 列表的循环
```python
test_list = [1,2,3,['a','b','c']]
for temp in test_list:
if type(temp) == list:
for li in temp:
print(li)
else:
print(temp)
```
打印:
```
1
2
3
a
b
c
```
## 字符串转换为列表
```python
a = 'hello word'
b = list(a)
print(b) # 打印: ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'd']
```