python中的数据结构

1,列表

# list的常用方法
list1=[1,2,3,4]
# 增加
list1.append(object)
list1.append(object)
list1.insert(index,object)# 将object插入到指定位置
list1.extend(iterable)# 将另外一个可迭代对象和list1合并
# 删
list1.pop()# 将刚加进来的6从stack中删除可以pop(index)传参,删除指定下标的元素
list1.remove(object)# 删除某一个元素
# 查
list1.index(object,start,end)# 从start到end的范围内找到指定的元素,如找不到会报错
list1.count(object)# 计算出指定元素的个数


list1.sort()# 给list1排序,
list1.copy()# 浅拷贝list1
list1.reverse()# 将list1倒过来

# 切片操作
list1=[1,2,3,4,5]
list2=list1[:]# 等同于copy()list1
list2=list1[start:end:step]# step指定了切割的步长和方向,start和end分别指定了开始和结束的位置
# 如果为空则默认到列表的开始和结束位置,如果指定了end切割的时候不会包括end下标对应的元素
list2=list1[:3:-1]# list2=[5]
 
# 使用for循环产生列表的方式
# 方式1
squares=[]
for x in range(10):
    squares.append(x**2)
# 此处x会一直存在浪费了内存
print(squares)

# 方式2
squares=[x**2 for x in range(10)]



# 列表推倒式
import math
squares=[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
#产生的元组数列中的x和y不相等
pi=[str(round(math.pi, i)) for i in range(1, 6)]
# 产生的pi保留的小数的位数是从1到5
#['3.1', '3.14', '3.142', '3.1416', '3.14159']

matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],]

list(zip(*matrix))
# 交换了二维数组的行和列

# del可以删除列表中的指定的切片,其他的例如str应该也同样适用
del a[1:3]

2,字典

#在循环一个字典时我们可以使用items来得到字典的,k和v
dict1={"A":97,"B":98,"C":99,"a":65}
for k,v in dict1.items:
    print(k,i)
# 同时我们还可以使用一个update, 可以用来改变对应key的value但是如果key不存在那么我们会添加到字典中
people_dict.update({"name":"杨洋"})
print(people_dict)

# 如果sorted对象是my_dict,那么key只能=字典中的键值
print(sorted(dict1, key=lambda x:x[0]))
# 给一个字典排序时通过key=来决定是按照键排序还是值排序
print(sorted(dict1.items(), key=lambda x:x[1]))
# max()函数同样可以用到字典中,这样可以求出dict1中值最大的键
print(max(dict1,key=lambda x:dict1[x]))
# 返回的是一个值最大的键值对
print(max(dict1.items,key=lambda x:x[1]))

# 字典筛选使用字典的推导式
d4={"a":1,"b":2,"c":3,"d":4}
d4={x:y for x,y in d4.items() if y>=3}
print(d4)


4,栈和队列

# python中列表的pop和append方法成功的描述了栈和队列
# 栈后进先出
stack=[1,2,3,4,5,5,6]
stack.pop()#此处取到6
stack.append(8)# 将8添加到列表末尾
# 队列先进先出
import collections
queue = collections.deque("a","b","c")
queue.append("d")# 将d添加到c后
queue.popleft()# 取得a

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值