认识列表
可变数据类型,可以一次性存储多个数据,且可以为不同数据类型,是一系列的数值的序列。列表中的元素又叫列表项
列表用 [ ] 定义,数据之间用 「 , 」分隔
['spam', 2.0, 5, [10,20], (20,30)]
上述代码中,可以看出列表可以由不同数据类型元素构成。同时包含列表的列表也叫网状列表、列表嵌套
list() 函数创建 ```python
list(‘hello’)
[‘h’, ‘e’, ‘l’, ‘l’, ‘o’] ```
列表属性
转换
list(
a = 'hello'print(list(a))
索引
语法: list[ index ],列表的索引默认从 0 开始
# 获取数据 jerra = ['tom', 'jerr', 'heha']print(a[1])--------------------------->>> 'jerr'
# 获取数据 hehoremix = [[1, 5.0, 'haha'], ['mars', 'tom', 'heho']]print(remix[1][2])--------------------------------------------------->>> 'heho'
上述代码,一个列表就是一个元素,所以 remix 有两个元素。通过 remix[1] 获取 remix 列表中第二个元素即 remix[1] = [‘mars’, ‘tom’, ‘heho’],此时再用 remix[1][2] 就可以获取到 heho,相当于获取列表 [‘mars’, ‘tom’, ‘heho’][2] 的元素
切片
对操作的对象截取其中一部分的操作,字符串、列表、元组都支持切片操作
- 语法: 列表序列 [ start: end: step]
- start: 切片操作包含开始位置的元素。正数索引表示从左到右默认从 0 开始取元素,负数索引表示从右到左默认从 -1 开始取元素
- end: 切片操作不包含结束位置的元素。
- step: 代表每次取值的跨度,不写表示默认是 1。步长为负数,表示倒序(从右往左)选取数据
- 步长: 代表每次取值的跨度,默认是 1,正数表示从左到右,负数表示从右到左
- 选取方向和步长的方向冲突,则无法选取数据 ```python a = [1, 2, 0.3, 4, 5, 6] temp = a[1: 4: -1] print(temp)
列表方法
增加
- append()
- 列表序列.append( )
- 追加的数据是一个元素,则添加该元素到列表元素结尾
- 追加的数据是一个序列,则将整个序列到列表元素结尾 ```python name_list = [‘Tom’, ‘Lily’, ‘Rose’] name_list.append([‘xiaoming’, ‘xiaohong’]) print(name_list)
[‘Tom’, ‘Lily’, ‘Rose’, [‘xiaoming’, ‘xiaohong’]] ```
- extend()
- 列表序列.extend( )
- 列表结尾追加的是单个数据,则单个数据会被拆分逐一添加
- 追加的数据是一个序列,则将这个序列的数据逐一添加到列表 ```python name_list = [‘tom’,’jerry’,’add’] print(name_list.extend(‘hehe’))
[‘tom’, ‘jerry’, ‘add’, ‘h’, ‘e’, ‘h’, ‘e’]
```pythonname_list = ['Tom', 'Lily', 'Rose']name_list.extend(['xiaoming', 'xiaohong'])print(name_list)----------------------------------------------------['Tom', 'Lily', 'Rose', 'xiaoming', 'xiaohong']
insert()
- 列表序列.insert(下表位置, 数据 )
列表相加 ```python a = [1, 2, 3] b = [‘a’, ‘b’, ‘c’] c = a + b print(c)
[1, 2, 3, ‘a’, ‘b’, ‘c’] ``` 列表相加,相当于把后面的一个列表数据追加到第一个列表后面
- insert()
- 列表序列.insert(index, data),index 指插入位置,data 指要插入的元素 ```python name_list = [‘Tom’, ‘Lily’, ‘Rose’] name_list.insert(1, ‘xiaoming’) print(name_list)
[‘Tom’, ‘xiaoming’, ‘Lily’, ‘Rose’] ```
删除
- remove()
- 列表序列.remove( data )。指定数据删除。
- 移除列表数据中第一个匹配项,其它符合条件的不移除
- 返回移除的元素,要移除的元素不存在则抛出异常 ```python values = [1, 0.5, 3, 1] values.remove(1) values
[0.5, 3, 1] ```
- pop()
- 列表序列.pop( index )。通过索引删除数据
- 如果不写下标,默认删除列表最后一个数据,并返回删除数据后的列表
- 如果写下标,则删除下表对应的数据,并返回删除数据后的列表
clear()
- 列表序列.clear()。是清空列表不是删除数据
- 返回空列表
del 和 del(【index】)
- del 目标 或 del(目标)
- del 列表[下标],可以删除指定下标数据 ```python a = [1, 2, 3] del a
不会返回任何数据
```python a = [1, 2, 3] del a[1] ---------------------- 返回删除数据后的列表
修改
- 列表序列[ index ] = 新数据,修改指定下标数据
查找
index()
- 列表序列.index( 数据, 【 开始位置下标,结束位置下标 】)
- 列表序列.rindex( 数据, 开始位置下标, 结束位置下标 ),从右侧开始查找数据
- 如果数据存在就返回数据开始的位置下标,否则返回错误
count()
- 列表序列.count( 数据,【 开始位置下标,结束位置下标 】)
- 开始和结束位置下标可以省略,表示在整个列表序列中出现的次数
- 如果存在就返回存在的次数,否则返回 0
- len()
- len( 列表序列 )
- 返回值是列表中数据的个数
index()、count()开始和结束位置下标 可以省略,表示在整个列表序列中执行
排序
- sort()
- 列表序列.sort( key=None,【 reverse=False 】 )
- 会改变原来列表中的位置
reverse表示排序规则,reverse = True 降序, reverse = False 升序(默认)
- sorted()
- sorted 函数不会更改原来列表的位置
- 返回一个排序后的值 ```python x = [4, 2, 1, 5, 3] y = sorted(x) print(y)
<a name="vcC9c"></a>
#### 判断
- 列表序列**.in**( 数据 )
- 检查指定数据在数据序列中,在则返回 True,否则返回False
```python
x = [1,2,3]
print(1 in x)
-------------------
>>> True
- 列表序列.not in( 数据 )
- 检查指定数据在数据序列中,不在则返回 True,否则返回False
复制
复制给新的变量,用于保存原列表,因为列表是可变数据类型,避免列表操作时原列表数据丢失
- 列表序列.copy() ```python name_list = [‘Tom’, ‘Lily’, ‘Rose’] name_li2 = name_list.copy() print(name_li2)
[‘Tom’, ‘Lily’, ‘Rose’] ```
列表遍历
遍历就是 从头到尾依次 从列表中获取数据,在循环体内部针对每一个元素执行相同的操作
在 Python 中为了提高列表的遍历效率,专门提供了 迭代 iteration 遍历
while, 不推荐使用此方法遍历
name_list = ['tom','lily','rose'] i = 0 while i < len(name_list): print(name_list[i]) i += 1for, 语法: for 循环内部使用的变量 in 列表,推荐此方法遍历
for name in name_list: # 以 for...in 为开始,: 为结束进行缩进 print(name) # 针对列表元素进行相应操作,此处为打印操作
