一、列表
1.创建列表
- 创建普通列表
member1 = [1, 2, 3, 4]
- 创建混合列表
member2 = ["a", 1, 12]
- 创建空列表
member3 = []
2.向列表添加元素
- append()函数向列表末尾添加一个元素
member1 = [1, 2, 3, 4]
member2 = ["a", 1, 12]
member1.append(member2)
print(member1)
[1, 2, 3, 4, ['a', 1, 12]]
- extend()函数向列表末尾添加多个元素
member1 = [1, 2, 3, 4]
member2 = ["a", 1, 12]
member1.extend(member2)
print(member1)
[1, 2, 3, 4, 'a', 1, 12]
- insert(n,xxx)函数向列表中第n个元素前插入一个元素
member1 = [1, 2, 3, 4]
member2 = ["a", 1, 12]
member1.insert(1,member2)
print(member1)
[1, ['a', 1, 12], 2, 3, 4]
3.从列表删除元素
- remove()函数表示从列表中删除某个元素
member1 = [1, 2, 3, 4]
member1.remove(1)
print(member1)
[2, 3, 4]
- del()函数也表示从列表中删除某个元素
member1 = [1, 2, 3, 4]
del member1[2]
print(member1)
[1, 2, 4]
- pop()函数从列表中取出最后一个元素,pop(i) 则为弹出下标为i的元素
member1 = [1, 2, 3, 4]
member1.pop()
print(member1)
[1, 2, 3]
- 使用切片的方法,添加元素
member1 = [1, 2, 3, 4]
member1[len(member1):] = [5,6]
print(member1)
[1, 2, 3, 4, 5, 6]
4.修改列表中的元素
-
reverse() 将列表中元素倒序
-
sort() 将列表中元素从小到大排序
mem = [1, 2, 5, 4, 3, 6]
mem.sort(reverse=True)
print(mem)
[6, 5, 4, 3, 2, 1]
5.查找列表中的元素
- count()函数可计算列表中相同元素个数
mem = [1, 2, 2, 4, 3, 2]
num = mem.count(2)
print(num)
3
- index(value,star,stop) 函数可索引列表元素
mem = [1, 2, 2, 4, 3, 2]
num = mem.index(4)
print(num)
3
- 补充,print中end的用法 print(‘’,end=‘’)
为末尾end传递一个空字符串,这样print函数不会在字符串末尾添加一个换行符,而是添加一个空字符串,表示这个语句没结束。此外,print()是换行。
mar = [[1,2,3],
[4,5,6],
[7,8,9]]
for eac in mar:
for ech in eac:
print(ech,end=' ')
print()
1 2 3
4 5 6
7 8 9
- 补充,多重嵌套容易写下的bug
A = [None]*3
for i in range(3):
A[i] = [0] * 3
A[1][1] = 1
print(A)
[[0, 0, 0], [0, 1, 0], [0, 0, 0]]
B = [[0]*3]*3
B1][1] = 1
print(B)
[[0, 1, 0], [0, 1, 0], [0, 1, 0]]
6.浅拷贝和深拷贝
- 浅拷贝:只拷贝了对象,对象内的元素并不会发生拷贝
#方法一:copy函数
x = [1,2,3]
y = x.copy()
x[1] = 5
print(y)
[1, 2, 3]
#方法二:切片
x = [1,2,3]
y = x[:]
x[1] = 5
print(y)
[1, 2, 3]
- 深拷贝:不仅拷贝对象,对象内的元素也会发生拷贝。多层嵌套需要用到深拷贝
import copy
x = [[1,2,3],[4,5,6],[7,8,9]]
y = copy.deepcopy(x)
x[1][1] = 0
print(x)
print(y)
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
7.列表推导式
- 表达式:[expression for target in iterable]
mar = [[1,2,3],
[4,5,6],
[7,8,9]]
x = [mar[i][i] for i in range(len(mar))]
print(x)
[1, 5, 9]
- 带判断语句的列表推导式: [expression for target in iterable if condition]
word = ["Great","FishC","Brilliant","Excellent"]
fword = [w for w in word if w[0]=="F"]
print(fword)
['FishC']
- 嵌套的列表推导式表示嵌套的循环:[expression for target1 in iterable1 for target2 in iterable2 …]
mar = [[1,2,3],[4,5,6],[8,9,10]]
fla = [col for row in mar for col in row]
print(fla)
[1, 2, 3, 4, 5, 6, 8, 9, 10]
8.切片
切片操作的基本表达式:object[start:end:step]
rhyme[ : : -1] #原列表逆序
二、元组
由于和列表是近亲关系,所以元组和列表在实际使用上是非常相似的。但是在操作上,相较于列表的“增删改查”,元祖只有“查”
- 创建元祖(括号可以没有,但逗号一定要有)
tuple = (1,2,3,4,5)
- 查找
#count统计某元素个数
tuple = (1,2,3,4,5,2,3,8)
num = tuple.count(3)
print(num)
2
tuple = ("喜羊羊","懒洋洋","美羊羊","灰太狼","灰太狼")
_index = tuple.index("美羊羊")
print(_index)
2
- 如何生成只有一个元素的元祖
tuple = (1,)
- 打包和解包(适用所有序列类型),解包时所采用的变量数量需要和元组内的元素数量相同
t = (123,"FishC",3.14)
x,y,z = t
print("x=",x ," y=",y," z=",z)
x= 123 y= FishC z= 3.14
#除非使用这种方式,用*表示完后面的元素
t = (123,'FishC',3.14)
x,*y = t
print("x=",x ," y=",y)
x= 123 y= ['FishC', 3.14]
- 元组中的元素若指向可变的列表,则其是可变的
s = [1,2,3]
t = [4,5,6]
w = (s,t)
w[1][0] = 0
print(w)
([1, 2, 3], [0, 5, 6])