零基础Python笔记2
主要内容包括:list的扩展、生成器
list
在list中添加新的元素
用一个list1作为操作对象:
list1 = [1, 2, 3, 4, 5]
eg1:
list1.append(6) # 在末尾添加6
print(list1)
list1则变为:
[1, 2, 3, 4, 5, 6]
eg2:
list1.insert(2, 0) # 在索引2位置添加0
print(list1)
list1则变为:
[1, 2, 0, 3, 4, 5]
eg3:
list2 = [6, 7, 8]
list1.extend(list2) # 将list2合并到list1中,并保留list2中的元素
print(list1)
print(list2)
list1则变为:
[1, 2, 3, 4, 5, 6, 7, 8]
list2保留:
[6, 7, 8]
count记数
eg:
list3 = ['a', 'b', 'a', 'd', 'a', 'f']
print(list3.count('a'))
返回值应为3
index查找
print(list3.index('a'))
返回索引值应为0
也可以用另一种方式来判断:
print('a' in list3)
返回值应为True
删除元素
还是用list1作为操作对象
list1 = [1, 2, 3, 4, 5]
print(list1.pop())
返回值应为末尾元素5,且list1中末尾元素5被移除
若想要删除指定位置的元素,可以使用如下操作:
print(list1.pop(3))
则删除的即为索引为3的元素,即list1中的元素4
再次打印list1,输出则为:
[1, 2, 4, 5]
也可以用remove方法:
list1.remove(1)
它会删除列表中1这个元素。如果列表中有多个重复元素,则删除第一个符合的元素。
这里要注意,和pop方法不同的是,remove本身不取值。
列表生成式
它的特点:用简洁的代码实现对列表元素的操作
例如,你想让列表中的每个元素值+1,朴素的方法是写一个循环,将列表元素遍历实现+1操作,如果用列表生成式,代码实现为:
[ n+1 for n in lis1]
再例如,你想求1-10之间所有数的平方
[(n+1)**2 for n in range(10)] # range(10)是从0-9
对字符串进行操作:
eg:
list2 = ['a', 'b', 'a', 'd', 'a', 'f']
["app_%s" %n for n in list2]
这串代码的意义是将list2中的每个字符串前面加上"app_",这里使用了%s作为占位符。
过滤功能
eg1:选取列表中的偶数
list1 = [1, 2, 3, 4, 5]
[n for n in list1 if n%2==0]
eg2: 筛选0-29之间的奇数
[n for n in range(30) if n%2==1]
eg3: 选取字符串中所有以‘sv’为结尾的项:
list4 = ['a', 'b', 'c_sv', 'd', 'e_sv']
[n for n in list4 if n.endwith('sv')]
eg4: 取两个列表的交集
list_1 = [1,3,5,7,10]
list_2 = [1,3,5,9,11]
[n for n in list_1 if n in list_2]
eg5: 在list_1中,但不在list_2中
[n for n in list_1 if n not in list_2]
生成器
第一种方法:类似于列表生成式,将[]改成()
g = (x * x for x in range(10))
运行:next(g)
,依次生成元素。
或者用for循环进行访问:
for n in g:
print(n)
第二种方法:基于函数的方法
编写一个函数,将每一轮的结果用yield输出
课程链接:https://aistudio.baidu.com/aistudio/course/introduce/7073