python---列表的切片、增加、删除、修改、成员关系、列表推导、排序翻转

来源:互联网 发布:linux grub 配置 编辑:程序博客网 时间:2024/06/05 11:52

python—列表的切片、增加、删除、修改、成员关系、列表推导、排序翻转

一、列表:
1、有序的集合
2、通过偏移来索引,从而读取数据
3、支持嵌套
4、可变的类型

>>> a = [1,2,3,4,5,6,7]>>> a[-1]7>>> b = [[1,2,3,4],5,6,7]>>> b[[1, 2, 3, 4], 5, 6, 7]>>> b[0][1, 2, 3, 4]>>> b[-1]7>>> b[0][1] =8>>> b[[1, 8, 3, 4], 5, 6, 7]>>> 

1)切片
a = [1,2,3,4,5,6,7]
正向索引
反向索引
默认索引

>>> >>> c = [1,2,3,4,5,6,7]>>> c[0:4:1][1, 2, 3, 4]>>> c[0:4:2][1, 3]>>> c[-1:-4:-1][7, 6, 5]>>> c[-1:-4:-2][7, 5]>>> c=[1:]  File "<stdin>", line 1    c=[1:]        ^SyntaxError: invalid syntax>>> c[1:][2, 3, 4, 5, 6, 7]>>> a[1::2][2, 4, 6]>>> 

2)添加操作
+ 生成一个新的列表
Extend 接收参数并将该参数的每个元素都添加到原有的列表中,原地修改列表而不是新建列表
Append 添加任意对象的引用到列表的末端
Insert 插入任意对象的引用到列表中,可以控制插入位置

>>> a = [1,2,3,4]>>> b = [5,6,7,8]>>> a + b[1, 2, 3, 4, 5, 6, 7, 8]>>> >>> >>> id(a)3074399820L>>> id(b)3074398636L>>> a.extend(b)>>> a[1, 2, 3, 4, 5, 6, 7, 8]>>> id(a)3074399820L>>> >>> a.append(9)>>> a[1, 2, 3, 4, 5, 6, 7, 8, 9]>>> a.append(12)>>> a[1, 2, 3, 4, 5, 6, 7, 8, 9, 12]>>> a.append([11,22,33,44])>>> a[1, 2, 3, 4, 5, 6, 7, 8, 9, 12, [11, 22, 33, 44]]>>> a.insert(1,'66')>>> a[1, '66', 2, 3, 4, 5, 6, 7, 8, 9, 12, [11, 22, 33, 44]]>>> 

3)修改
修改列表本身只需要直接赋值操作就行
A = [1,2,3]
A[0] = ‘haha’

>>> e = [1,2,3,4,5]>>> e[2] = 9>>> e[1, 2, 9, 4, 5]>>> e[3] = 'python'>>> e[1, 2, 9, 'python', 5]>>> 

4)删除操作
Del 我们通过索引删除指定位置的元素
Remove 移除列表中指定值的第一个匹配值。如果没找到的话,会抛出异常。
Pop 返回最后一个元素,并从list中删除她

>>> f = [1,2,3,4,5,6]>>> del f[0]>>> f[2, 3, 4, 5, 6]>>> del f[-1]>>> f[2, 3, 4, 5]>>> f.remove(4)>>> f[2, 3, 5]>>> f.remove(7)Traceback (most recent call last):  File "<stdin>", line 1, in <module>ValueError: list.remove(x): x not in list>>> f.pop(2)5>>> f[2, 3]>>> 

5)成员关系
In not in 我们可以判断一个元素是否在列表里面。
返回一个bool类型,元素在列表里返回true,否则返回false。

6)列表推导式
[expr for iter_var in iterable]
6.1)首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算生成一个列表。

比如我们要生成一个包含1到10的列表
[x for x in range(1,11)]
range(1,11)

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

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

要生成包含1到10的所有奇数列表
range(1,11,2)
[x for x in rang(1,11) if x % 2 == 1]

>>> range(1,11,2)[1, 3, 5, 7, 9]>>> range(1,11,3)[1, 4, 7, 10]>>> >>> [x for x in range(1,11) if x %2 ==1 ][1, 3, 5, 7, 9]>>> range(1,11,2)[1, 3, 5, 7, 9]>>> 

7)排序翻转:sort,reverse
a = [33,11,22,44]
这个方式直接修改原列表。他的返回值为none,所以
b = a.sort()
print b 输出的内容是None
我们直接输出a列表

list的reverse函数:反转一个list,他的返回值为none
比如上面的列表a
b = a.reverse()
print b 输出的内容是None

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

>>> >>> a = [33,11,22,44]>>> b = a.sort()>>> b>>> if b is None:...     print 'haha'... haha>>> a[11, 22, 33, 44]>>> c = a.reverse()>>> c>>> if c is None:...     print 'null'... null>>> a[44, 33, 22, 11]>>> 
原创粉丝点击