Python3-python中常见的数据结构及其使用

Python3-python中常见的数据结构及其使用

1. 列表

1.1 列表常见的方法(函数)

在这里插入图片描述

示例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-irDkSjvP-1606310153889)(assets/image-20201125211514580.png)]
在这里插入图片描述

在这里插入图片描述

1.2 列表可看作堆栈(stack)

堆栈是一种常见的数据结构,数据先进后出,列表可以看作是一个堆栈。
分析如下:
在这里插入图片描述
可以看到append(x)pop()方法,前者是在最右边插入一个元素,后者是在最右边移除一个元素。这和堆栈的添加和删除元素的原理是一致的,堆栈在堆顶添加元素,也在堆顶移除元素。

1.3 列表可看作队列(queue)

队列也是一种常见的数据结构,数据先进先出。然而将列表看作是队列的效率不高,因为从列表最左边取出第一个元素或在列表中插入某个元素的速度并不快。
在这里插入图片描述
from collections import deque
deque是一个双向队列,如果经常需要在两端append或pop元素,使用这个数据结构效率较高,若经常需要在队列中插入元素,效率会比较低。

1.3 列表推导

一句话总结:由列表生成列表。
在一个列表中,可以使用for语句或者if语句生成一个新的列表。

list1 = [1,2,3]
list2 = [4,5,6]
new_list1 = [x*2 for x in list1]
new_list2 = [x*y for x in list1 for y in list2]
new_list3 = [x*y for x in list1 if x>1 for y in list2 if y>5]
new_list4 = [x*y for x in list1  for y in list2 if y>5 if x>1]
new_list5 = [list1[i]*list2[i] for i in range(len(list1))]
print(new_list1)
print(new_list2)
print(new_list3)
print(new_list4)
print(new_list5)

在这里插入图片描述

1.4 嵌套列表的使用

嵌套列表,即列表内的元素也是列表。最经典的嵌套列表就是就是矩阵。

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

print(matrix)
print(matrix[1])
print(matrix[0][0])
print(matrix[1][1])

在这里插入图片描述
可以看到第一次索引,是取列表,而第二次索引是取在第一次索引的基础上取列表中的元素。
矩阵转置:

# 以下三种方法本质是一样的,都是嵌套for循环
# 方法1:
matrix = [[1, 2, 3, 4],
          [5, 6, 7, 8],
          [9, 10, 11, 12]]

m1 = [[raw[0] for raw in matrix]]
m_new = [[raw[i] for raw in matrix] for i in range(4)]
print((m1))
print(m_new)


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

m_new = []
for i in range(4):
    m1 = [raw[i] for raw in matrix]
    m_new.append(m1)

print(m_new)

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

m_new = []
for i in range(4):
    m1 = []
    for raw in matrix:
        m1.append(raw[i])
    m_new.append(m1)

print(m_new)

在这里插入图片描述

1.5 del语句

按索引删除元素或切片,也可以删除变量。
在这里插入图片描述

2. 元组嵌套

在这里插入图片描述

3. 集合

集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。空集合必须使用set()创建。
这里仅演示集合推导
与列表推导类似,集合推导就是用一个集合生成另一个集合。
在这里插入图片描述

4. 字典

字典可以看作是一个无序的键值对集合,在同一个字典中,关键字必须是互不相同的。一对大括号创建一个空的字典:{}。
通过构造函数dict()元组列表构建字典。
在这里插入图片描述

5. 遍历技巧

# 字典遍历
dict = {
    
    1:'a', 2:'b', 3:'c'}
print(dict)
for k, v in dict.items():
    print(k, v)

# 列表遍历
for i, j in enumerate(['a', 'b', 'c']):
    print(i, j)

# 格式化输出
# {0} {1}表示format(q,a)中的第一个参数和第二个参数。
questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']
for q, a in zip(questions, answers):    # q从questions中获取,a从answers中获取。
    print('What is your {0}?  It is {1}.'.format(q, a))

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_36522099/article/details/110146170