Python基础

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]
上一篇 下一篇

猜你喜欢

热点阅读