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

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]
>>> 
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐为波

看着给就好了,学习写作有点累!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值