python3基础知识自学笔记2-列表

列表(list)
列表是一种无序的、可重复的数据序列,可以随时添加、删除其中的元素。
列表页的每个元素都分配一个数字索引,从 0 开始
列表使用方括号创建,使用逗号分隔元素
列表元素值可以是任意类型,包括变量
使用方括号对列表进行元素访问、切片、修改、删除等操作,开闭合区间为[)形式
列表的元素访问可以嵌套
方括号内可以是任意表达式

创建列表
>>> hello = (1,2,3)
>>> li=[1,"2",[3,"a"],(1,3),"hello"]
访问元素
>>> print(li[3])
(1, 3)
>>> print(li[-2])
(1, 3)
>>> print(li[-3])
[3, 'a']

切片访问
格式: list_name[begin:end:step] 
begin 表示起始位置(默认为0),
end 表示结束位置(默认为最后一个元素),
step 表示步长(默认为1)
>>> print(li)
[1, '2', [3, 'a'], (1, 3), 'hello']
>>> print(li[1:2])
['2']
>>> print(li[:])
[1, '2', [3, 'a'], (1, 3), 'hello']
>>> print(li[2:])
[[3, 'a'], (1, 3), 'hello']
>>> print(li[1:-1:2])
['2', (1, 3)]

访问内嵌 list 的元素:
>>> li = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ['a', 'b', 'c']]
>>> print(li[1:-1:2][1:3])
[3, 5] 
>>> print(li[-1][1:3])
['b', 'c']
>>> print(li[-1][1])
b

修改列表
通过使用方括号,可以非常灵活的对列表的元素进行修改、替换、删除等操作。
>>> li = [0, 1, 2, 3, 4, 5]
>>> li[len(li) - 2] = 22
>>> li
[0, 1, 2, 3, 22, 5]
>>> li[3] = 33
>>> li
[0, 1, 2, 33, 22, 5]
>>> li[1:-1] = [9, 9]
>>> li
[0, 9, 9, 5]
>>> li[1:-1] = []
>>> li
[0, 5]

删除元素
可以用 del 语句来删除列表的指定范围的元素。
>>> li = [0, 1, 2, 3, 4, 5]
>>> del li[3]
>>> li
[0, 1, 2, 4, 5]
>>> del li[2:-1]
>>> li
[0, 1, 5]

列表操作符
+ 用于合并列表
* 用于重复列表元素
in 用于判断元素是否存在于列表中
for ... in ... 用于遍历列表元素
>>> [1, 2, 3] + [3, 4, 5]
[1, 2, 3, 3, 4, 5]
>>> [1, 2, 3] * 2
[1, 2, 3, 1, 2, 3]
>>> 3 in [1, 2, 3]
True
>>> for x in [1, 2, 3]: print(x)
... 
1
2
3

列表函数
len(list) 列表元素个数
max(list) 列表元素中的最大值
min(list) 列表元素中的最小值
list(seq) 将元组转换为列表
>>> li = [0, 1, 5]
>>> max(li)
5
>>> len(li)
3
注: 对列表使用 max/min 函数,
2.x 中对元素值类型无要求,
3.x 则要求元素值类型必须一致。


列表方法
list.append(obj)
在列表末尾添加新的对象
list.count(obj)
返回元素在列表中出现的次数
list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值
list.index(obj)
返回查找对象的索引位置,如果没有找到对象则抛出异常
list.insert(index, obj)
将指定对象插入列表的指定位置
list.pop([index=-1]])
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj)
移除列表中某个值的第一个匹配项
list.reverse()
反向排序列表的元素
list.sort(cmp=None, key=None, reverse=False)
对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数
list.clear()
清空列表 还可以使用 del list[:]、li = [] 等方式实现
list.copy()
复制列表 默认使用等号赋值给另一个变量,实际上是引用列表变量。

列表推导式
列表推导式提供了从序列创建列表的简单途径。
通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,
或者根据确定的判定条件创建子序列。
每个列表推导式都在 for 之后跟一个表达式,然后有零到多个 forif 子句。
返回结果是一个根据表达从其后的 forif 上下文环境中生成出来的列表。
如果希望表达式推导出一个元组,就必须使用括号。

将列表中每个数值乘三,获得一个新的列表:
>>> vec = [2, 4, 6]
>>> [(x, x**2) for x in vec]
[(2, 4), (4, 16), (6, 36)]

对序列里每一个元素逐个调用某方法:
>>> freshfruit = ['  banana', '  loganberry ', 'passion fruit  ']
>>> [weapon.strip() for weapon in freshfruit]
['banana', 'loganberry', 'passion fruit']

用 if 子句作为过滤器:
>>> vec = [2, 4, 6]
>>> [3*x for x in vec if x > 3]
[12, 18]

>>> vec1 = [2, 4, 6]
>>> vec2 = [4, 3, -9]
>>> [x*y for x in vec1 for y in vec2]
[8, 6, -18, 16, 12, -36, 24, 18, -54]
>>> [vec1[i]*vec2[i] for i in range(len(vec1))]
[8, 12, -54]

列表嵌套解析:
>>> matrix = [
... [1, 2, 3],
... [4, 5, 6],
... [7, 8, 9],
... ]
>>> new_matrix = [[row[i] for row in matrix] for i in range(len(matrix[0]))]
>>> print(new_matrix)
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

 

posted @ 2018-08-07 17:20  鬼谷神僧  阅读(131)  评论(0编辑  收藏  举报