-
Python第五章-内置数据结构02-列表
想一想:
前面学习的字符串可以用来存储一串信息,那么想一想,怎样存储咱们班所有同学的名字呢?
定义100个变量,每个变量存放一个学生的姓名可行吗?有更好的办法吗?
答:
列表
列表介绍
list
python 中一般把它翻译为列表.
list
是 python 中用途最广的一种数据结构。
list
可以存储多个数据,这些数据用 [ ]
包裹,各个数据之间用 ,
分割。
list
中的元素可以是任意类型的,但是实际使用的时,一个list
中一般只存储一种数据类型的数据。
list
中可以存储的元素是有顺序的,且允许重复。
list
中的元素也可以更改。
list
的索引从0开始。索引就是数据在列表中的位置编号,索引又可以被称为下标。从列表中取值时,如果超出索引范围,程序会报错
内置函数 len
也可以获取到 list
的长度
获取列表中某一个元素的数值
列表名[index]
index:表示列表中元素的下标(或者理解为位置,从0开始。到长度-1。不能越界)
使用for ...in
示例代码:
使用while循环
示例代码:
修改list
中的元素
list
和字符串不太一样。字符串是不可变的。 而list
是可变的。
我们可以通过索引去更改指定索引位置的元素的值
向 list
中添加元素和从 list
中删除元素
list.append(value)
向 list
的末尾添加元素
list.pop([index])
把指定索引位置的元素删除. 如果不传入参数就是删除最后一个元素
list.insert(index, ele)
把元素 ele
插入到指定的 index
位置。原来的元素会自动右移动
还有一种删除元素的办法:使用 del
运算符
del
关键字本质上是用来将一个变量从内存中删除的。
通过切片也可以修改 list
中的元素,甚至清空 list
extend
通过extend可以将另一个集合中的元素逐一添加到列表中
面试题:+= 对于列表的作用
针对于列表:a += b。不是做相加再赋值的操作。本质就是a.extend(b)
list
可以像字符串那样通过 +
连接。得到的新的 list
包含了参与运算的两个 list
中所有元素
和字符串一样,list
也支持索引读取和切片。其实内置的序列类型都支持这样的操作
注意:
所有的切片操作都是返回一个新的 list
,所以我们可以通过切片非常轻松的 copy 一个list
注意: 这里的复制是浅复制. 其实以后你会发现在, 几乎所有的复制都是浅复制, 如果要深复制, 需要自己递归实现.
嵌套的意思是,列表中的元素也可以是列表。
因为列表中的元素可以是任意类型,所以嵌套也是很容易理解的。
列表推导,有人也叫列表包含。
他提供了一种更加简洁的方式去创建列表。
列表推导的语法:
说明:
会对序列中的每个 item 执行表达式, 然后把值存入到一个新的列表中.
举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):
示例代码1:
示例代码2:求一个数的3次方
上面的代码相当于:
示例代码3:
列表推导的时候也可以添加条件:求偶数的平方
列表推导也支持for 的嵌套
示例代码4:
注意:
得到的列表的长度是一种笛卡尔积. 也就是说新列表的长度是原列表的长度的乘积.
通过以上的学习,我们可以看到str
和list
有许多通用的特点:都支持索引和切片
由于字符串是不可变对象,所以字符串没有删除的操作。list
是可变的,所以提供了删除的操作。
__EOF__