python中列表、字典、元组与集合的特点以及差异

1.列表(List)

列表的特点

1. 数据按顺序存储
2. 列表有正序、倒序两种索引
3. 列表可存储任意类型的数据,并且允许重复。

列表的遍历:

lst = [1,2,3]
for i in range(len(lst)):
	print(lst[i])

列表的增删改操作
在这里插入图片描述
列表的缺点:
在表达结构化数据时语义不明确(结构化数据是指有明确属性的数据)
例如:

["张三",“经理”,“2000-4-24”,39,21000]
像上述的结构无法解析2000-4-24到底是什么含义,21000也不明确
解决该缺陷的方法就是用字典存储结构化数据。

2.字典(Dictionary)

字典的特点

1.字典采用了键(key)值(value)对的方式存储数据
2.字典中键不能重复,但是值可以
3.字典无序存储,并且运行时是动态调整存储空间(hash哈希表/散列表转换得到存储地址,然后再将值存储在该地址的空间中)

字典的创建方式

1. dict1 = {‘name’:‘张三’,'age':29}
2. dict2 = dict(name=‘张三’,age=29)

字典的更新操作(字典的新增操作与更新的操作完全相同,秉承有则更新、无则新增的原则)

#只能更新一个值
dict2['name']='王四'
dict2['age']=40
#更新多个值
dict2.update(name='王四',age=40)

字典的遍历

1.
for key in dict2:
	value = dict2[key]
2.
for key,value in dict2.items():
	print(key,value)

字典的删除:

1.pop 删除指定的key和value
dict2.pop('name')
2.popitem 删除最后一个key
dict2.popitem()

字典的常用操作:

#字典常用操作
dict1 = {'name':'lzq','age':24,'birthdate':'1996-11-20'}

#1.设置默认
dict1.setdefault('job','Stu')
print(dict1)

#2.字典的视图,会随着字典的变化而变化
key = dict1.keys()
value = dict1.values()
item = dict1.items()
print(key)
print(value)
print(item)

dict1['school']='szu'
print(key)
print(value)
print(item)

#3.字典的格式化输出
#第一种写法
dict_str = "%(name)s,%(age)s,%(birthdate)s"% dict1
print(dict_str)

#第二种写法(一般用这种比较多和规范)
dict_str2 = "{name},{age},{birthdate}".format_map(dict1)
print(dict_str2)

字典的存储原理:

键(key)--》得到hash()值--》存储地址(哈希值)--值(value)
name 张三      248392           248392       张三

3.元组(Tuple)

元组的特点:

1.使用小括号
2.在创建后不允许修改
3.使用索引读取元组中的值

元组的读取操作(与列表一致,使用索引)
元组无法进行写操作,因此不支持append、extend、insert等操作

tup = (a,b,c,1,2,3)
tup[1:3]
tup[-1]

#元组运算符
t = (1,2,3)+(4,5,6)   #创建了新的元组t 它的值是(1,2,3,4,5,6)
t = ("see,")*5 #创建了新的元组t,它的值为("see","see","see","see","see")
#注意,括号中加了逗号才会被认为是元组

4.集合(Set)

集合的特点

1.可以把集合看作是没有Value的字典,也就是集合的值不可变且不可重复
2.集合是分散存储,跟字典一样hash分布地址
3.允许数学运算

集合的创建

1.使用{}符号创建集合
2.使用set()函数创建

对集合求交集、并集、差集

set1 = {'a','b','c'}
set2 = {'a'}
#求set1和set2的交集
set1.intersection(set2)
#求set1和set2的并集
set1.union(set2)
#求set1中有但是set2无的差集
set1.difference(set2)

5.差异性

特点列表字典元组集合
符号中括号[]大括号{}小括号()大括号{}
数据存储连续、静态不连续、动态连续、静态不连续、动态
元素是否有序
数值是否可改变TrueTrueFalseFalse
读取方式索引索引只能遍历
值是否可以重复键不能重复,值可以可以不可以
应用场景非结构化数据存储结构化数据存储稳定不变的数据存储???
### Python元组列表字典集合特点和使用方法 #### 元组 (Tuple) 元组是一个不可变序列,通常用来存储一组异构数据项。一旦创建后,其内部元素不允许修改。这使得元组非常适合用于保存那些不应该被更改的数据。 - **特点** - 不可变性:无法增删改其中的任何成员。 - 支持索引访问以及切片操作。 - **定义方式** ```python tup = ('apple', 'banana', 'cherry') ``` - **常用操作** 尝试改变元组中的某个值会引发错误: ```python try: tup[0] = "orange" except TypeError as e: print(f"Error: {e}") ``` #### 列表 (List) 列表Python中最常用的有序容器之一,可以容纳任意数量的对象,并允许动态调整大小。元组相反的是,列表是可以随时添加新项目或删除现有项目的。 - **特点** - 可变性:能够自由地向列表中追加新的条目或是移除旧有的记录。 - 维护插入顺序;支持随机存取模式下的快速查找功能。 - **定义方式** ```python lst = ['apple', 'banana', 'cherry'] ``` - **常见用途** 可以通过`append()`方法增加单个元素到列表末端: ```python lst.append('date') print(lst) # 输出['apple', 'banana', 'cherry', 'date'] ``` 也可以通过`extend()`一次性加入多个元素组成的另一个迭代器对象内的全部成分至当前实例里去: ```python more_fruits = ['elderberry', 'fig'] lst.extend(more_fruits) print(lst) # 输出['apple', 'banana', 'cherry', 'date', 'elderberry', 'fig'] ``` 还可以利用负数下标从右往左定位特定位置处的内容: ```python last_item = lst[-2] ``` #### 字典(Dictionary) 字典是以键(key)-值(value)对形式存在的映射类型,提供了高效的检索机制。每个key都必须独一无二,在同一个dictionary里面不存在两个相同的keys关联不同的values的情况发生。 - **特点** - 键具有唯一性和哈希特性; - 提供O(1)复杂度级别的平均情况下读写效率; - **定义方式** ```python dict_example = {"name": "Alice", "age": 25} ``` - **基本应用** 获取指定key对应的value: ```python person_name = dict_example["name"] ``` 更新已有entry里的data或者新增一条全新的record进去: ```python dict_example.update({"address":"Wonderland"}) ``` #### 集合(Set) 集合是由一系列互不相同且无固定排列次序的item构成的一种抽象数据类型。它特别适用于执行各种基于数学理论上的set operations比如union(), intersection()等. - **特点** - 成员间彼此独立,即不会存在重复现象; - 属于unordered collection因此不具备indexing能力; - **定义方式** ```python s = set(['apple', 'banana', 'cherry']) ``` - **主要作用** 实现并集运算: ```python another_set = {'date', 'elderberry'} combined_sets = s.union(another_set) ``` 求交集的结果: ```python common_elements = s.intersection({'banana', 'dragonfruit'}) ``` 计算差异部分: ```python difference_between_sets = s.difference({'banana'}) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值