列表
- 列表是可变对象,有以下等方法:
list.append(x) # 在列表尾田加元素 x
list.extend(L) # 在列表尾添加指定列表 L 中的内容
list.insert(p,x)# 在下标 p 插入元素 x
list.remove(x) # 删除列表中的第一个元素 x
list.pop([i]) # 删除列表位置 i,并将其返回,若没有指定索引,则删除最后一个元素
list.clear() # 清空列表
list.index(x) # 返回列表中第一个值为 x 的索引
list.sort() # 对列表的元素进行排序
list.copy() # 返回列表的浅复制
- 可以把列表当做堆栈用
stack = [1,2,3]
stack.append(x)
stack.pop()
- 可以把列表当做队列用,但效率不高
queue = deque([1,2,3])
queue.append(x)
queue.popleft()
queue.popright()
列表推导式
- 列表推导式提供了从序列创建列表的简单途径。
每个列表推导式在for
之后跟一个表达式,后接零个或多个for
或if
子句
print ([a+b for a in "abc" for b in "!@#"])
print([[x,x**x] for x in range(5) if x > 2])
输出如下:
['a!', 'a@', 'a#', 'b!', 'b@', 'b#', 'c!', 'c@', 'c#']
[[3, 27], [4, 256]]
嵌套列表解析
- 列表可以嵌套,模拟多维数组
arr = [
[1,2,3],
[4,5,6],
[7,8,9],
]
print(arr)
arr2 = [[x+3*y for x in range(1,4)] for y in range(3)]
print(arr2)
输出结果如下:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
del
语句
del
语句可以从一个列表中按索引来删除元素
del a[0]
del a[2:4]
del a[:]
del a
元组
- 元组在输入时可能没有括号,但是输出时总是有括号的,是不可修改对象
t = 1,2,3
print(t)
t = (1,2,3)
print(t)
u = t,(4,5,6)
print(u)
输出结果如下:
(1, 2, 3)
(1, 2, 3)
((1, 2, 3), (4, 5, 6))
集合
- 集合是无序不重复元素的集合,用花括号括起来
创建空集合必须使用set()
,若使用{}
则会创建一个空字典
st = {'c','b','a',3,2,1,1,2,3}
print(st)
print(1 in st)
a = set({1,2,3,4,5})
b = set({2,4,6,8,10})
print(a-b)
print(a|b)
print(a&b)
print(a^b)
输出结果如下:
{1, 2, 3, 'b', 'c', 'a'}
True
{1, 3, 5}
{1, 2, 3, 4, 5, 6, 8, 10}
{2, 4}
{1, 3, 5, 6, 8, 10}
字典
- 字典以关键字为索引,关键字可以是任意不可变类型,但关键字必须互不相同
使用大括号创建一个空的字典{}
dict = {'alice' : 1, 'bob' : 2,3 : 3,4 : 4,5 : 'Nick'}
print(dict['alice'])
print(dict)
del dict['alice']
print(dict)
print(list(dict.keys()))
print('bob' in dict)
print('Nick' in dict)
输出结果如下:
1
{'alice': 1, 'bob': 2, 3: 3, 4: 4, 5: 'Nick'}
{'bob': 2, 3: 3, 4: 4, 5: 'Nick'}
['bob', 3, 4, 5]
True
False
- 我们可以通过这样来遍历字典
dict = {'alice' : 1, 'bob' : 2,3 : 3,4 : 4,5 : 'Nick'}
for a,b in dict.items():
print(a,b)
输出结果如下:
alice 1
bob 2
3 3
4 4
5 Nick