Python 列表、元组、集合、字典、Json、数组、矩阵 简单示例说明

本文介绍了Python中常用的数据结构,包括列表、元组、集合和字典的基本操作及应用场景,并探讨了这些数据结构的特点和使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【列表】有序的集合,可随时添加和删除其中的元素

【列表】有序的集合,可随时添加和删除其中的元素
list = [1,2,3,'A','B','C']

#查看
list
list[5]
print(list[5])

#末尾添加
list.append('D')

#指定位置之后添加
list.insert(1, '1.5')

#删除最后一个
list.pop()

#删除指定值
list.remove('C')

#删除指定位置的
list.pop(1)

#遍历查看
for v in list:
	print(v)

for i in range(len(list)):
	print ("index = %s,value = %s" % (i, list[i]))
	
for i, v in enumerate(list):
	print ("index = %s,value = %s" % (i, v))

【元组】tuple 和 list 非常类似,但tuple不能修改(约束强)

【元组】tuple 和 list 非常类似,但tuple不能修改(约束强)
tuple = (1,2,3,'A','B','C')
tuple = ([1,2,3,'A','B','C'],4,'D')
list = ([1,2,3,'A','B','C']) #元组中只有1个列表,这种写法结果变成了列表,不是元组,也不是集合

#查看
tuple
tuple[5]
print(tuple[5])

#碎不能直接改,但可与其他方法添加
tuple = tuple + ('D',)

#删除元组
del tuple

#遍历查看(与列表一样)
for v in tuple:
	print(v)

for i in range(len(tuple)):
	print ("index = %s,value = %s" % (i, tuple[i]))
	
for i, v in enumerate(tuple):
	print ("index = %s,value = %s" % (i, v))

【集合】不重复

【集合】不重复
myset =  set([1,2,3,'A','B','C'])
myset2 =  set([1,2,'B','C'])

#查看
myset
print(myset)

#添加
myset.add('D')

#删除
myset.remove('D') 

#移除最早值
myset.pop()

#并集  
myset | myset2

#交集 
myset & myset2

#差集 
myset - myset2

#遍历

for v in myset:
	print (v)

for i, v in enumerate(myset):
	print ("index = %s,value = %s" % (i, v))

【字典】

dict = {}
dict = {'name':'kk', 'age':100}

#查看
dict
dict['name']
print(dict['age'])
print(dict.keys())
	
#修改
dict['age'] = 18

#添加
dict['birthday'] = '1900-01-01'

#删除键值对
del dict['birthday']

#遍历
for k in dict:
	print('%s = %s' % (k,dict[k]))

for k in dict.keys():
	print('%s = %s' % (k,dict[k]))
	
for k,v in dict.items():
	print('%s = %s' % (k,v))

其他应用:

【json】	
#格式:字典
aa = {"name": "kk", "age": 99 }  

#格式:列表中存储字典
bb = [ {"name": "mm", "age": 10},{"name": "qq", "age": 20},{"name": "hh", "age": 50} ] 

#遍历列表
for item in bb:  
	print(item,item["name"])  

#Json格式化
import json
print(json.dumps(aa,indent=4))
print(json.dumps(bb,indent=4))


【多维/嵌套列表】——【矩阵*假】
格式:列表中保存格式一致的列表
list_matrix = [
	[1, 2, 3, 4],
	[5, 6, 7, 8],
	[9, 10, 11, 12],
]

#查看
print(list_matrix[2])
print(list_matrix[2][0])

【数组】——【矩阵*假】

from numpy import *

#数组
arr1=array([2,2,2])
arr2=array([2,3,5])

#数组对应相加/相乘
arr3 = arr1 + arr2
arr4 = arr1 * arr2
print(arr3)
print(arr4)

#多维数组
arr5=array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])

print(arr5)
print(arr5[1,0])
print(arr5[1][0])

【矩阵*真】

【矩阵*真】
from numpy import *
mat0 = matrix([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(mat0)

#嵌套列表转为矩阵
list = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],]
mat1=matrix(list)
print(mat1)

#数组转为矩阵
arr5=array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
mat2=matrix(arr5)
print(mat2)

#3行4列值为1的矩阵
mat2=matrix(ones((3,4)))
print(mat2)

#对角矩阵
mat2=matrix(eye(4,4,dtype=int))
print(mat2)



<think>好的,用户想了解字典矩阵的概念和用法,特别是它的数据结构和实现。首先,我需要确认“字典矩阵”这个术语在常见数据结构中的定义,因为可能用户指的是某种特定的结构,或者是将字典矩阵结合起来的用法。 首先,回忆常见的矩阵存储方式,比如邻接矩阵、稀疏矩阵等。邻接矩阵通常用二维数组表示,但可能在大数据量下效率不高。稀疏矩阵可能会用字典(哈希表)来存储非零元素,比如键是行列索引,值是对应的元素值。这种情况下,字典矩阵可能指的是用字典结构来高效存储稀疏矩阵的数据结构。 接下来,查看用户提供的引用内容。引用[3]提到图的存储方式有字典存储、邻接矩阵和邻接表。其中字典存储可能指的是用字典来表示图的邻接关系,例如每个顶点对应一个字典,存储相邻顶点及权重。这可能和用户的问题相关,但需要进一步分析。 用户的问题明确提到“字典矩阵”,可能是指使用字典(哈希表)来实现矩阵结构,尤其是稀疏矩阵。这样的结构可以节省空间,因为只存储非零元素。例如,在Python中,可以用字典的键是(row, col)元组,值是矩阵元素的值。这种方法适用于元素大部分为零的情况。 接下来,数据结构方面,需要考虑如何高效地访问和修改元素。字典的查找和插入是平均O(1)的时间复杂度,适合稀疏矩阵的场景。实现时需要注意行列索引的处理,可能需要默认值为0,或者处理缺失键的情况。 另外,用户可能需要了解字典矩阵的应用场景,比如自然语言处理中的词向量矩阵,或者图论中的邻接矩阵。引用[3]中提到的图存储方式可能与此相关,比如用字典存储顶点间的边和权重。 然后,实现部分需要给出具体的代码示例。在Python中,可以定义一个类,内部使用字典存储数据,并实现矩阵的基本操作,如获取元素、设置元素、矩阵加法等。需要注意处理默认值,例如未显式存储的元素默认为0。 最后,生成相关问题需要考虑用户可能进一步想知道的内容,比如字典矩阵的优缺点、性能比较、实际应用案例,以及与其他数据结构(如邻接表、压缩稀疏行)的对比。 总结下来,字典矩阵的核心概念是用字典实现稀疏矩阵的高效存储,适用于元素稀疏的场景,节省空间,同时保持较高的访问效率。需要结合引用中的内容,特别是引用[3]提到的图存储方式,来支持解释。</think>### 字典矩阵的概念与实现 #### 1. 基本概念 **字典矩阵**是一种利用字典(哈希表)实现稀疏矩阵存储的高效数据结构。其核心思想是将非零元素的行列索引组合为键(如$(i,j)$),对应的值为矩阵元素。例如矩阵: $$ \begin{bmatrix} 0 & 5 & 0 \\ 0 & 0 & 3 \\ 0 & 0 & 0 \end{bmatrix} $$ 可存储为字典:`{(0,1):5, (1,2):3}`,仅保留非零元素[^3]。 #### 2. 数据结构设计 - **键设计**:使用元组$(row, col)$作为键,例如`(2,3)`表示第3行第4列。 - **值设计**:存储具体数值,支持整数、浮点数或对象。 - **默认值**:未显式存储的位置默认值为0(或其他指定值)。 #### 3. Python实现示例 ```python class DictMatrix: def __init__(self, rows, cols, default=0): self.rows = rows self.cols = cols self.default = default self.data = {} # 字典存储核心数据 def get(self, i, j): return self.data.get((i, j), self.default) def set(self, i, j, value): if 0 <= i < self.rows and 0 <= j < self.cols: if value != self.default: self.data[(i, j)] = value elif (i, j) in self.data: del self.data[(i, j)] # 删除默认值元素以节省空间 else: raise IndexError("索引超出矩阵范围") def add(self, other): # 矩阵相加(需校验维度) result = DictMatrix(self.rows, self.cols, self.default) for (i,j), v in self.data.items(): result.set(i, j, v + other.get(i, j)) return result ``` #### 4. 应用场景 - **稀疏矩阵存储**:适用于机器学习、图论中邻接矩阵的稀疏表示[^3]。 - **动态数据场景**:频繁修改非零元素时,字典操作效率高于传统数组。 - **跨语言兼容性**:JSON等格式可直接序列化字典结构。 #### 5. 性能对比 | 操作 | 数组矩阵 | 字典矩阵 | |------------|----------|----------| | 空间复杂度 | $O(n^2)$ | $O(k)$ | | 读取元素 | $O(1)$ | $O(1)$ | | 遍历非零值 | $O(n^2)$ | $O(k)$ |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值