Python入门(五)
2018-09-08 本文已影响7人
一路向前_莫问前程_前程似锦
列表操作
上次课程我们将到了列表,接着我们继续来看列表的一些操作
删除列表中的元素
del 函数可以删除列表中的元素,一般的函数都是用小括号,只有列表用中括号
list1=list(range(9))
list1
[0, 1, 2, 3, 4, 5, 6, 7, 8]
del list1[0]
list1
[1, 2, 3, 4, 5, 6, 7, 8]
删除列表的子列表:
del list1[1:3]
list1
[1, 4, 5, 6, 7, 8]
删除整个列表
del list1
list1
##相当于从内存中清空---------------------------------------------------------------------------```
下面我们看一个难点
列表生成式(难点)
在Python的列表中,列表生成式体现了Python优雅的特色! 如果让你生成一个列表,元素是1~10的平方,你会怎么生成?
1 方法一:简单粗暴
list2[1**2, 2**2,3**2,4**2,5**2,6**2,7**2,8**2,9**2,10**2]
list2
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
2 方法二:循环
list3=[]
for i in range(1,11):
list3.append(i**2)
list3
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
3 方法三:列表生成式,列表里面可以放循环
,中间里面没有标点符号
,全部是空格
,而正常书写函数后面跟着的是·冒号·
[i**2 for i in range(11) ]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
list4=[i**2 for i in range(11) ]
list4
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
一行代码搞定!,是不是很优雅,哈哈
大家比较一下循环和列表生成式,发现列表生成式结构如下
[表达式 for i in 序列]
如果循环里是双层的,你还能用列表生成式?
当然可以!
[i*j for j in range(1,i) for i in range(1,10)]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4,
8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36,
42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 2
7, 36, 45, 54, 63, 72, 81]
双层循环列表生成式
[i*j for j in range(1,i) for i in range(1,10) if j<=i]##结果如下
[1, 2, 3, 4, 5, 6, 7, 8, 9, 4, 6, 8, 10, 12, 14, 16, 18, 9, 12, 15, 18, 21, 24, 27, 16, 20, 2
4, 28, 32, 36, 25, 30, 35, 40, 45, 36, 42, 48, 54, 49, 56, 63, 64, 72]
常规for循环写法
list5=[]
for i in range(0,10):
for j in range(1,i):
if j<=i:
list5.append(i*j)
print(list5)
[2, 3, 6, 4, 8, 12, 5, 10, 15, 20, 6, 12, 18, 24, 30, 7, 14, 21, 28, 35, 42, 8, 16, 24, 32,
40, 48, 56, 9, 18, 27, 36, 45, 54, 63, 72]
常规for循环写法 ##比较二者写法区别
list6=[]
if j<=i:
for i in range(1,10):
for j in range(1,i):
list6.append(i*j)
print(list6)
[2, 3, 6, 4, 8, 12, 5, 10, 15, 20, 6, 12, 18, 24, 30, 7, 14, 21, 28, 35, 42, 8, 16, 24,
32,40, 48, 56, 9, 18, 27, 36, 45, 54, 63, 72]
习题:求出1~10中能被3整除的数的平方做成列表:通过if来筛选符合条件的(就是循环里嵌套判断),这个时候就是利用列表生成式表示
[i**2 for i in range(1,11) if i%3==0]
[9, 36, 81]