python数据结构

一、列表

  • 列表基本操作
# 创建一个列表
list1 = [1, 2, 3]
list2 = [5, 6]
# 把一个元素添加到列表结尾
list1.append(4)
# 通过添加指定列表的所有元素来扩充列表
list1.extend(list2)
# 在指定位置插入一个元素
list1.insert(0, 0)
# 删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误
list1.remove(6)
# 从列表的指定位置移除元素,并将其返回
list1.pop(0)
# 如果没有指定索引,返回最后一个元素,元素随即从列表中被移除
list1.pop()
# 返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误
print(list1.index(2))
# 返回 x 在列表中出现的次数
print(list1.count(1))
# 倒排列表中的元素
list1.reverse()
# 对列表中的元素进行排序
list1.sort()
# 返回列表的浅复制
list3 = list1.copy()
# 移除列表中的所有项
list1.clear()
  •  列表用作堆栈
# 列表用作堆栈
stack = [1, 2, 3, 4]
# 入栈
stack.append(5)
stack.append(6)
# 出栈
print(stack.pop())  # 6
print(stack.pop())  # 5
print(stack)
  • 列表用作队列
from collections import deque

queue = deque([1, 2])
# 入队
queue.append(4)
# 出队
print(queue.popleft())  # 1
print(queue.popleft())  # 2

print(queue)
  • 列表推导式

列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。

list1 = [1, 3, 5, 7]
list2 = [x**2 for x in list1]  # [1, 9, 25, 49]
list3 = [[x, x**2] for x in list1]  # [[1, 1], [3, 9], [5, 25], [7, 49]]
list4 = [id(x) for x in list1]  # [140721236645536, 140721236645600, 140721236645664, 140721236645728]
list5 = [x**2 for x in list1 if x > 3]  # [25, 49]
list6 = [' apple ', ' banana ']
list7 = [x.strip() for x in list6]  # ['apple', 'banana']
list8 = [-1, -2, -3, -4]
list9 = [x+y for x in list1 for y in list8]  # [0, -1, -2, -3, 2, 1, 0, -1, 4, 3, 2, 1, 6, 5, 4, 3]
list10 = [list1[i] + list8[i] for i in range(len(list1))]  # [1, 3, 5, 7]
  • 嵌套列表
list1 = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
]
# [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
print(list1)
# 矩阵转换方法一
list2 = [[row[i] for row in list1] for i in range(len(list1[0]))]
# 矩阵转换方法二
list3 = []
for i in range(len(list1[0])):
    list3.append([row[i] for row in list1])
# 矩阵转换方法三
list4 = []
for i in range(len(list1[0])):
    list_row = []
    for j in list1:
        list_row.append(j[i])
    list4.append(list_row)
print(list4)
# [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
  • del语句
list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8]
del list1[0]  # [1, 2, 3, 4, 5, 6, 7, 8]
del list1[2:5]  # [1, 2, 6, 7, 8]
del list1[:]  # []
print(list1)

二、元组

tup1 = (1, 2, 3)
tup2 = (tup1, (4, 5, 6))
# ((1, 2, 3), (4, 5, 6))
print(tup2)

三、集合

  • 集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。
  • 集合也支持推导式:
set1 = {x for x in '1234567' if x not in '456'}
print(set1)  # {'7', '1', '2', '3'}

四、字典

# 创建字典
dict1 = {1: 1, 2: 2}
# 键对值元组列表创建字典
dict2 = dict([(1, 1), (2, 2)])
# 关键字为字符串时使用关键字参数创建
dict3 = dict(one=1, two=2)
# 推导式创建
dict4 = {x: x**2 for x in (1, 2, 3)}  # {1: 1, 2: 4, 3: 9}
# 添加键对值
dict1[3] = 3
# 删除键对值
del dict1[1]
# 以列表形式打印键
print(list(dict1.keys()))  # [2, 3]
# 排序
print(sorted(dict1.keys()))
# 是否包含键
print(1 in dict1)  # False
print(dict4)

五、遍历技巧

# 在字典中遍历时,关键字和对应的值可以使用items()方法同时解读出来
dict1 = {1: 1, 2: 2, 3: 3}
for k, v in dict1.items():
    print(k, v)
# 1 1
# 2 2
# 3 3
# 在序列中遍历时,索引位置和对应值可以使用enumerate()函数同时得到
tup1 = (1, 2, 3)
for i, v in enumerate(tup1):
    print(i, v)
# 0 1
# 1 2
# 2 3
# 同时遍历两个或更多的序列,可以使用zip()组合
list1 = [1, 2, 3]
list2 = [4, 5, 6]
for a, b in zip(list1, list2):
    print('{0}, {1}'.format(a, b))
# 1, 4
# 2, 5
# 3, 6
# 要反向遍历一个序列,首先指定这个序列,然后调用reversed()函数
for i in reversed(list1):
    print(i, end=' ')
# 3 2 1
# 要按顺序遍历一个序列,使用sorted()函数返回一个已排序的序列,并不修改原值
list3 = [3, 2, 1]
for i in sorted(list3):
    print(i, end=' ')
# 1 2 3 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值