列表
一、添加元素
小结:
- append 在末尾添加元素
- insert 在指定位置插入元素
- extend 合并两个列表
append
append会把新元素添加到列表末尾
A = ['xiaoWang', 'xiaoZhang', 'xiaoHua']
temp = 'xiaofei'
A.append(temp)
print(A) # ['xiaoWang', 'xiaoZhang', 'xiaoHua', 'xiaofei']
insert
insert(index, object) 在指定位置index前插入元素object
strs = ['a','b','m','s']
strs.insert(3,'h')
print(strs) # ['a', 'b', 'm', 'h', 's']
extend
通过extend可以将另一个集合中的元素逐一添加到列表中
a = ['a','b','c']
b = ['d','e','f']
a.extend(b)
print(a) # ['a', 'b', 'c', 'd', 'e', 'f'] 将 b 添加到 a 里
print(b) # ['d','e','f'] b的内容不变
二、删除元素
小结:
-
del:根据下标进行删除,下标超出范围报错:# IndexError
-
pop:删除最后一个元素,
-
remove:根据元素进行删除,只能删除第一个,多的不会删除
不存在则报错,list.remove(x): x not in list
-
clear():清空列表元素
del
movieName = ['加勒比海盗', '骇客帝国', '速度与激情']
del movieName[1]
print(movieName) # ['加勒比海盗', '速度与激情']
pop
a = [1, 2, 3, 4]
a.pop()
print(a) # [1, 2, 3
remove
b = [3, 4, '小明', 5, 6]
b.remove('小明')
print(b) # [3, 4, 5, 6]
clear
c = [3, 4, 5, 'xiaoming', 2]
c.clear()
print(c) # []
删除多个元素的方法
方法一:
list = [2, 1, "酸奶", "酸奶", 1]
for i in list[::-1]:
if i == "酸奶":
list.remove(i)
print(list)
方法二:
list1=["酸奶",2,"abs",3,6,"酸奶"]
n=0
while n<len(list1):
if list1[n]=="酸奶":
list1.remove("酸奶")
else:
n+=1
print(list1)
方法三:
a=[]
for i in list:
if i !='酸奶':
a.append(i)
list=a
print(list)
三、修改元素
通过下标来访问列表元素,修改元素时,直接赋值即可。
tanks = ['貂蝉', '瑶瑶', '张飞', '妲己', '小乔']
tanks[2] = '奶妈'
print(tanks) # ['貂蝉', '瑶瑶', '奶妈', '妲己', '小乔']
四、查找元素
所谓的查找,就是看看指定的元素是否存在,以及查看元素所在的位置,主要包含一下几个方法:
- in 和 not in
- index 和 count
in, not in
python中查找的常用方法为:
- in(存在),如果存在那么结果为true,否则为false
- not in(不存在),如果不存在那么结果为true,否则false
#待查找的列表
nameList = ['关羽','张飞','刘备']
#获取用户要查找的名字
findName = input('请输入要查找的姓名:')
#查找是否存在
if findName in nameList:
print('在列表中找到了相同的名字')
else:
print('没有找到')
index, count
index用来查找元素所在的位置,如果未找到则会报错;count用来计算某个元素出现的次数。它们的使用和字符串里的使用效果一致。
>>> a = ['a', 'b', 'c', 'a', 'b']
>>> a.index('a', 1, 3) # 注意是左闭右开区间
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'a' is not in list
>>> a.index('a', 1, 4)
3
>>> a.count('b')
2
>>> a.count('d')
0
五、排序
sort
sort方法是将list按特定顺序重新排列,默认为由小到大,
list = [1, 23, 5, 11, 9, 3, 6, 3]
list.sort()
print(list) # [1, 3, 3, 5, 6, 9, 11, 23]
sort(reverse=True)可改为倒序,由大到小。
reverse
b = [1, 2, 3, 4]
b.sort(reverse=True)
print(b) # [4, 3, 2, 1]
reverse方法是将list逆置。
a = [3, 5, 3, 8]
a.reverse()
print(a) # [8, 3, 5, 3]
六、冒泡排序
- 方法一
m = [9, 8, 7, 6, 4, 3, 5]
m.sort()
print(m)
- 方法二
- 疑问?
- 为啥 while i < len(m) - j: 这里是减 j
而 for i in range(len(m) - 1 - j): 是 减j 减1
while中
j前面已经+1了,所以j=1, 减j(1) 下面的m[i + 1]刚好取到最后一位
而for中,刚开始j是等于0的,如果不减1,下面的m[i]就取到最后一位了
m[i + 1]则超出索引范围
m = [9, 8, 7, 6, 4, 3, 5]
j = 0
while j < len(m) - 1:
j += 1
i = 0
while i < len(m) - j:
if m[i] > m[i + 1]:
m[i], m[i + 1] = m[i + 1], m[i]
i += 1
print(m)
for j in range(len(m) - 1):
for i in range(len(m) - 1 - j):
if m[i] > m[i + 1]:
m[i], m[i + 1] = m[i + 1], m[i]
print(m)
七、列表推导式
x = []
for i in range(10):
if i % 2 == 0:
x.append(i)
print(x)
推导式
x = [i for i in range(10) if i % 2 == 0]
print(x)