列表、元组、字典、集合之间的关系以及区别

1.必看

1.1列表、元组、字典、集合的区别
列表:顺序存储结构,占更多存储空间(默认存了指针),元素不必相同,用"[]“表示。
元组:元组和列表在结构上没有什么区别,唯一的差异在于元组是只读的,不能修改。元组用“()”表示。
字典:字典定义了键和值之间一对一的关系,但它们是以无序的方式储存的。定义 Dictionary 使用一对大(花)括号”{}"。(其中前三个也可称之为Python的数组类型)
集合:用的比较少,无序不重复元素集。
1.2
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
1.3为什么有了列表还要有元组、字典、集合?
降低程序的时间复杂度
比如字典:Python字典因为在存储元素时,将key哈希转化到了存储地址,所以如果要在字典里查找某个元素的key,不需要循环字典,只需要进行同样的哈希计算就可以得到了。
1.4本文属于学习笔记,所以很多具体的知识点并没有记录,关于具体知识点可以访问菜鸟教程

2.列表、元组、字典、集合最基本的创建

2.1
列表的创建

a = [1,2,3]

字典的创建(字典中每一对数据都是‘键’和‘值’相对应的)

a = {key1:value1,key2:value2}

元组的创建

t = (1,2,3)

集合的创建

s = {'s','e','t'}

2.2
用list()、tuple()、dict()、set()内置方法转换

s = set([1,2,3])

3.列表

3.1列表的三个优点:
1.列表里想装啥就装啥,即:他可以包含不同种类、任意类型的对象,甚至可以嵌套列表,专业点的词儿叫:异构性;所以,列表里面的数据可以是不同类型的数据。
2.列表里装的元素都是有顺序的,可以按照位置序号获取单个元素,也可以用分片的方法来进行多个连续元素的获取,来个专业词汇,叫做:有序性。所以,列表的下标可以进行索引和切片。
3.列表的大小和内容可以随意改变,在插入、删除、修改列表元素时,不需要建立一份新的列表拷贝,而是在原来的内存地址上直接修改列表对象。这个叫“本地可修改”。所以,列表可以删除元素,列表拼接等。
3.2列表常见操作和方法
1.列表的索引
2.列表的分片操作
3.列表删除元素
4.列表的拼接
5.列表的重复
6.元素成员判断
7.求列表的长度
8.求列表的最大、最小值
9.在列表中插入元素
10.反转一个列表
11.计算列表中指定元素x的个数
12.查找列表中指定元素的位置
13.列表的排序

4.元组

元组类似于列表,是一个基于位置的有序对象集合,但是元组一旦创建之后就不能更改,因此列表中修改元素的操作对于元组都不适用。

  • 为什么要使用元组?

元组和其他不可变量类似于其他语言中“常量”的声明,它的不可变性提供了某种一致性,这样可以确保元组在程序中不会被另一个引用修改。
Mark Lutz——《Learning Python》中文版

5.字典

5.1常见操作方法

操作解释
.key()获取所有键
.values()获取所有值
.items()获取所有“键+值”元组
len()获取键值对的数量
.get(key,default)获取键的值,若键不存在,则返回设定的默认值default(默认为None)–与[key]获取值的区别是,get方法遇到键不存在的时候会返回设定值,而直接索引遇到键不存在时会报错“missing-key”
dict1.update(dict2)合并两个字典

5.2索引

dict1[key]
#key是字典的键,返回的是对应的值value
dict1.get(key)
#get方法获取键的值,若键不存在,则返回设定的默认值default(默认为None)--与`[key]`获取值的区别是,get方法遇到键不存在的时候会返回设定值,而直接索引遇到键不存在时会报错“missing-key”

5.3遍历

for i in dict1.keys():
	print(i, dict1[keys]) 
# 遍历字典中所有的键,并输出键值对 
for i in dict1: 
      ...
# 该方法与上述方法等价 
for keys, values in dict1.items():
     ... 
# 遍历字典中所有的键值对 

5.3排序
1.①借助.keys()方法和list()函数将键提取成list,对list排序后输出

D = {'a':1, 'c':3, 'b':2}
D1 = list(D.keys())
D1.sort()
for i in D1: 
    print(i, D[i])
# 输出:
# a 1
# b 2
# c 3

②借助内置的sorted()函数可对任意对象类型排序,返回排序后的结果。
tips:对于sorted(字典)来说,返回的是排序好的keys(以list的形式)

D = {'a':1, 'c':3, 'b':2}
for i in sorted(D):
    print(i, D[i])
# 输出:
# a 1
# b 2
# c 3

2.用字典的值对字典进行排序,将{1: 2, 3: 4, 4:3, 2:1, 0:0}按照字典的值从大到小进行排序。

a = {1:2,3:4,4:3,2:1,0:0}
sorted_a = sorted(a.items(),key=lambda a:a[1],reverse=False)
print(sorted_a)

★sorted(iterable, key=lambda a:a[1], reverse=False)
①其中iterable是可迭代对象
②reverse = True 降序 , reverse = False 升序(默认)
③key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
④key=lambda a:a[1],是个lambda表达式,冒号右边的值返还给a。而a[1]表示a下标为1的值返还给a,最后,lambda表达式的值让key这个变量来指向。

6.集合

6.1

  • 为什么使用集合?
    1.由于集合内元素是不重复的,因此可以将list或其他类型的数据转换成集合,从而过滤掉其中的重复元素
    2.通过集合的交并补等操作,可以比较列表、字符串以及其他可迭代对象的差异。

6.2集合的常用操作

set1 `&` set2 
#交运算
set1 `|` set2 
#并运算
set1 `-` set2 
#差运算,set1减去set1 `&` set2部分

6.3集合的常用方法

set1.add('x')  
#添加元素。注意:集合中只能包含可哈希的对象,即list,dict都不能嵌入到集合中
set1.union(...)  
#取并集,效果等同于 | ,但是括号里可以是list,tuple,其他dict甚至是dictset1.intersection(...)  
#取交集,同上set1.issubset(set2)  
#判断set1是否是set2的子集
Python编程语言中,有四种常用的集合数据类型,它们分别是列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)。列表是一种有序和可更改的集合,允许重复的成员。元组是一种有序且不可更改的集合,也允许重复的成员。字典是一个无序、可变且有索引的集合,其中没有重复的成员。而集合是一种无序和无索引的集合,没有重复的成员。这四种集合数据类型在Python中都有着不同的特点和用途。 在Python中,列表元组和字符串都属于序列,它们的元素都可以通过编号进行访问。而字典则属于映射,其中的元素是以键值对的形式存在的。集合则不属于序列或映射中的任何一种,它是一种独立的数据类型,用于存储一组不重复的元素。 总结起来,Python中的列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)都是常用的集合数据类型,它们各自有着不同的特点和用途。列表是有序和可更改的集合元组是有序且不可更改的集合字典是无序、可变且有索引的集合集合是无序和无索引的集合。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [浅谈python四种集合数据类型—【列表元组集合字典】](https://blog.csdn.net/QWERTYzxw/article/details/121479048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python 元组集合字典](https://download.csdn.net/download/weixin_38603219/13752298)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值