1.1.1列表

来源:互联网 发布:网络营销策划发展状况 编辑:程序博客网 时间:2024/05/29 17:09

课程内容

 

列表:

1 有序的集合  a=[1,2,3] 有序的 按照顺序来的存储  这里的有序是指可以用切片根据下表进行索引的有序,而非会根据大小等排列

2 通过偏移来索引,从而读取数据 a=[1,2,3] 若取最后一个数字可以用a[2]或者a[-1]来取

3 支持嵌套b=[[1,2,3],[4,5,6]]

4 可变的类型  其中的值可以更换 比如 把2换成7  b[0][1]=7

 

 

 

1 切片: 不管是正还是反都往后多数一个数

a = [1,2,3,4,5,6,7]

正向索引 取前四个 a[0:4:1]相当于从0个取到第4个步长为1(:)  个数0-4 个数减去1

反向索引取后三个a[-1:-4:-1]相当于从最后一个(-1)开始取,取到倒数第四个反向取(-1)个数 -1- -4个数减去1

默认索引

取第二个到最后 a[0:]不写默认取到最后,步长为1

取2,4,6  a[1::2]相当于从2开始取 取到最后切步长为2

 

 

2添加操作extend append  insert

 

+ 生成一个新的列表a=[1,2,3]  b=[4,5,6] a+b则为[1,2,3,4,5,6]

Extend  接受参数并将该参数的每个元素都添加到原有的列表中,原地修改列表而不是新建列表(里面只能添加列表  a.extend(b)   则a=[1,2,3,4,5,6]  地址还是a的地址

Append :添加任意对象到列表的末端   a=[2,3,4] b=[5,6,7]  a.append(b)  则a=[2, 3, 4, [5, 6, 7]]  
a.  append(4) a=[1,2,3,4]
添加数字就是数字 添加列表就是列表 这是和extend(只插入数字)的区别  也可以添加元组。

Insert: 插入任意对象到列表中,可以控制插入位置

a.insert(1,’abc’)   则a=[1, 'abc', 2, 3]
a.insert(1,b) 则 a=[1, [5, 6, 7], 2, 3]
插入数字就是数字 插入列表就是列表

 

3 修改:

 

修改列表本身只需要直接赋值操作就行

A = [1,2,3]

A[0]=’haha’

A=[‘haha’,2,3]

4 删除操作

Del :我们通过索引删除指定位置的元素(可以利用切片的方法删除大段。a=[1,2,3,4,4] 

del a[1]  a=[1, 3, 4, 4]

Remove:移除列表中指定值的第一个匹配值。如果没找到的话,会抛异常。

a=[1,2,3,4,4]

a.remove(2)   a= [1, 3, 4, 4]

Pop:返回最后一个元素,并从list中删除它。

a=[1,2,3,4,4]

a.pop()  返回值为4  若输出a则 a= [1, 2, 3, 4]

5 成员关系:

 

In not in我们可以判断一个元素是否在列表里。

返回一个bool类型,元素在列表里返回true,否则返回fasle.

a=[1,2,3,4,4]

2 in a  True

5 in a   False

 notin 则相反

6 列表推导式:

 

 

[expr for iter_var in iterable]    iter_var迭代变量  iterable]迭代器  expr表达式

 

1首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。

 

[expr for iter_var initerable]   生成新列表与iterable格式一样iterable的值带到expr中计算得出数之后按iterable格式写出来即可

 

 

 

比如我们要生成一个包含1到10的列表

 

[x for x in range(1,11)]   x为iter_var  range(1,11)为iterable   
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Range(1,11)   11-1总个数

[1, 2, 3, 4, 5, 6,7, 8, 9, 10]

 

 

[expr for iter_var initerable if cond_expr]

2加入了判断语句,只有满足条件的内容才把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。

 

要生成包含1到10的所有奇数列表。

range(1,11,2)

[x for x in range(1,11) if x % 2 == 1]

7 排序翻转:sort,reverse

a = [33,11,22,44]

这个方式直接修改原列表。他的返回值为none,所以

b = a.sort()

print b 输出的内容是None

我们直接输出a列表变量

a=[11, 22, 33, 44]从小到大排序 若赋值给b则输出值为None

 

listreverse函数:反转一个list,他的返回值为none

比如上面的列表a

b = a. reverse()

print b 输出的内容是None

直接看a列表变量能看到翻转的效果。

a=[44, 33, 22, 11]  结果从大到小排序了 则背反转了

 

练习笔记

 

1修改(a[1:4])可以选取一段(保留中间的)而删除指令 del则可以删除一段(保留两边的)

 

2显示的时候 print(a.append(b))返回的是None如果要显示具体数值则应该分开写

            append(b)

            print(a)

 

3+’和append两个比较 第一个是直接合并第二个是带着列表一起合并

 

4 [x for x inrange(1,11)] 本身就是一个列表不用在print直接就能显示出来。而且这样表达式是每一行就显示一个数如果先变成行的形式则需

a=[x for x in range(20,101)if x%2==0]

print(a)