参考文档
https://blog.csdn.net/Yeoman92/article/details/56289287

理解Python中列表,元组,字典,集合的区别

列表,元组,字典,集合的区别是python面试中最常见的一个问题。这个问题虽然很基础,但确实能反映出面试者的基础水平。

1.列表(List)

  什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单。比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单。
由于我们买一种东西可能不止一次,所以清单中是允许有重复项的。如果我们扩大清单的范围,统计我们过去一周所有的花费情况,
那么这也是一个清单,但这个清单里会有类别不同的项,比如我们买东西是一种花费,交水电费也是一种花费,这些项的类型是可以使不同的。
python的列表个跟清单的道理是一样的,特点就是:可重复,类型可不同。类型不同也是跟数组最本质的区别了。python里的列表用“[]”表示。

#定义一个列表
listA = ['a', 'b', 'c', 1, 2]

listA[1] # 'b'

# 向 list 中增加元素

# 1.使用append 向list 的末尾追加单个元素。(把列表当做堆栈使用——后进(后出))
#listA = ['a', 'b', 'c', 1, 2, 3]
listA.append(3)

# 2.使用 insert 将单个元素插入到list 中。数值参数是插入点的索引
# 在下标为3处插入一个元素,listA = ['a', 'b', 'c', 'd', 1, 2, 3]
listA.insert(3, 'd')

# 3.使用 extend 用来连接 list
# listA = ['a', 'b', 'c', 'd', 1, 2, 3, 7, 8]
listA.extend([7, 8])

# 获取列表的长度
print len(listA) # 9

# 在 list 中搜索
listA.index(3) # index 在 list 中查找一个值的首次出现并返回索引值。
listA.index('100') # 如果在 list 中没有找到值,Python 会引发一个异常。

print 5 in listA # 要测试一个值是否在 list 内,使用 in。如果值存在,它返回 True,否则返为 False 。

# 从 list 中删除元素
listA.remove(3) # remove 从 list 中 仅仅 删除一个值的首次出现。如果在 list 中没有找到值,Python 会引发一个异常

print listA.pop() # pop 它会做两件事:删除 list 的最后一个元素,然后返回删除元素的值。(把列表当做堆栈使用——(后进)后出)

# 还有一种把列表当做队列使用,最先进入的元素最先释放(先进先出)
# 不过,列表这样用效率不高。相对来说从列表末尾添加和弹出很快;
# 在头部插入和弹出很慢(因为,为了一个元素,要移动整个列表中的所有元素)。

# 遍历list
for item in listA:
print item

extend (扩展) 与 append (追加) 的看起来类似,但实际上完全不同。

extend 接受一个参数,这个参数总是一个 list,并且把这个 list 中的每个元素添加到原 list 中。
append 接受一个参数,这个参数可以是任何数据类型,并且简单地追加到 list 的尾部。

2.元组(Tuple)

  元组和列表在结构上没有什么区别,唯一的差异在于元组是只读的,不能修改。元组用“()”表示

#定义一个元组
tuple1 = (1,2,'a',4,'5',6)

# 定义了一个元组之后就无法再添加或修改元组中的元素

print tuple1[2] # 'a' 元组的元素都有确定的顺序。元组的索引也是以0为基点的
print tuple1[-1] # '5' 负的索引从元组的尾部开始计数
print tuple1[1:3] # (2, 'a') 元组也可以进行切片操作。对元组切片可以得到(返回)新的元组,原元组不变

# 可以使用 in 运算符检查某元素是否存在于元组中。
print 1 in tuple1 # True

#使用for in 进行遍历元组
for item in tuple1:
print item

# 如果需要获取item的序号 可以使用下面的遍历方法:
for index in range(len(tuple1)): #range(len(tuple1))就是生成一个自然排序列表
print tuple1[index]

# 还可以使用内置的enumerate函数
for index, item in enumerate(tuple1):
print '%i, %s' % (index, item)

3.字典(Dictionary)

  字典定义了键和值之间一对一的关系,但它们是以无序的方式储存的。 Python 中的 dictionary 像 Java 中的 Hashtable 类的实例。定义 Dictionary 使用一对大(花)括号” { } “

Dictionary 不只是用于存储字符串。Dictionary 的值可以是任意数据类型,包括字符串、整数、对象,甚至其它的 dictionary。
在单个 dictionary 里,dictionary 的值并不需要全都是同一数据类型,可以根据需要混用和匹配。

# 定义一个字典
dict1 = {'name' : 'yeoman', 'age' : 24, 'sex' : 'Male'}

dict1['name'] = 'yuanm' # 为一个已经存在的 dictionary key 赋值,将简单覆盖原有的值。
dict1['Age'] = 25 # 在 Python 中是区分大小写的 age和Age是完全不同的两个key

# 从字典中删除元素
del dict1['sex'] # del 允许您使用 key 从一个 dictionary 中删除独立的元素

dict1.clear() # clear 从一个 dictionary 中清除所有元素

4.集合(Set)

  Python的集合(set)和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素.
集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.由于集合是无序的,所以,sets 不支持 索引, 分片, 或其它类序列(sequence-like)的操作。

集合也存在不可变形式,frozenset为固定集合.
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
注意:想要创建空集合,你必须使用 set() 而不是 {} ,后者用于创建空字典
可以通过一个set函数转换成集合,如:

lst = [ 1, 1, 0]

lst_set = set( lst ) #lst_set 为1 , 0

tup = (2, 2, 1)

tup_set = set( tup) # tup_set为2 , 1

for item in lst_set:
print item

# 使用 set 函数创建集合
list1 = [6, 7, 7, 8, 8, 9]
set2 = set(list1)

set2.add(10) # 添加新元素
print set2 # set([8, 9, 10, 6, 7]) 去掉重复内容,而且是无序的

set3 = frozenset(list1)
#set3.add(10) # 固定集合不能添加元素,会报错AttributeError: 'frozenset' object has no attribute 'add'

### 集合有并集,交集,求差操作
### a & b 并集:intersection() 方法返回一个新集合,包含在两个集合中同时出现的所有元素。
### a | b 交集:union() 方法返回一个新集合,包含在两个 集合中出现的元素。
### a - b 差集:difference() 方法返回的新集合中,包含所有在 集合A出现但未在集合B中的元素。
### a ^ b 对称差集:symmetric_difference() 方法返回一个新集合,包含所有只在其中一个集合中出现的元素。

# 删除元素
set2.discard(6) # 当元素不存在时,不会引发异常
set2.remove(6) # 与discard的区别在于,如果没有要删除的元素,remove会引发一个异常
set2.pop() # 因为set是无序的,所以pop会随机的从set中删除一个元素

Python中列表,元组,字典,集合的区别的更多相关文章

  1. python中列表 元组 字典 集合的区别

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...

  2. python 中列表 元组 字典 集合的区别

    先看图片解释 (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单.由于我们买一种东西可能不止一次,所以清单中是允许有重复 ...

  3. **python中列表 元组 字典 集合

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...

  4. python的列表元组字典集合比较

    定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner','list'],7- ...

  5. python3笔记十八:python列表元组字典集合文件操作

    一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle  #数据持久性模块 #封装的方法def OptionData(data,path):    # ...

  6. python_列表——元组——字典——集合

    列表——元组——字典——集合: 列表: # 一:基本使用# 1.用途:存放多个值 # 定义方式:[]内以逗号为分隔多个元素,列表内元素无类型限制# l=['a','b','c'] #l=list([' ...

  7. Python学习-列表元组字典操作

    一.列表 列表是Python的基本数据类型之一,它是以 [] 括起来的,内部成员用逗号隔开.里面可以存放各种数据类型. # 例如: list2 = ['jason', 2, (1, 3), ['war ...

  8. python的学习笔记01_4基础数据类型列表 元组 字典 集合 其他其他(for,enumerate,range)

    列表 定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性: 1.可存放多个值 2.可修改指定索引位置对应的值,可变 3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问 ...

  9. Python 列表&元组&字典&集合

    列表(list) 有序性,可存储任意类型的值 通过偏移存取,支持索引来读取元素,第一个索引为0 ,倒数第一个索引为-1 可变性 ,支持切片.合并.删除等操作 可通过索引来向指定位置插入元素 可通过po ...

  10. Python之列表&元组&字典

    今天学习了Python的基本数据类型,做以下笔记,以备查用. 一.列表 列表的常用方法: 1.append()方法 def append(self, p_object): # real signatu ...

随机推荐

  1. Django连接MySQL数据库配置

    1.自己手动创建数据库 create database 数据库名; # 如: create database bms character set utf8; # 授权访问: grant all pri ...

  2. P2P技术之STUN、TURN、ICE详解

    现在大多数计算机主机都位于防火墙或NAT之后,很少有计算机直接接入Internet.通常,人们希望网络中两天计算机能直接进行通信(P2P通信),而不是需要其他公共服务器的中转. 由于主机位于防火墙或N ...

  3. fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map

    作者:buster2014 推荐:长安散人 fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map JSON字符串与Java对象的转换 1.将Java对象或Java ...

  4. LOJ P10150 括号配对 题解

    Analysis 区间dp裸题 初始化有点麻烦 i,j能匹配时要特判 #include<iostream> #include<cstdio> #include<cstri ...

  5. SQL SERVER PIVOT使用

    参照这个网址介绍 http://www.cnblogs.com/lwhkdash/archive/2012/06/26/2562979.html 一般SQL Server的函数都会识别为紫色,可是PI ...

  6. centos7的redis加哨兵系统

    三台服务器 1.下载 wget http://download.redis.io/releases/redis-5.0.3.tar.gztar -zxvf redis-5.0.3.tar.gzcd r ...

  7. 基于部标1078视频协议和苏标Adas协议构建主动安全平台

    苏标本身仍然是基于部标808协议的基础上递增起草的,苏标协议是包容808协议的, 不能脱离808协议而独立存在的, 主要基于<JT/T 796 道路运输车辆卫星定位系统平台技术要求>.&l ...

  8. luogu_P4767 [IOI2000]邮局

    传送门 Description 高速公路旁边有一些村庄.高速公路表示为整数轴,每个村庄的位置用单个整数坐标标识.没有两个在同样地方的村庄.两个位置之间的距离是其整数坐标差的绝对值. 邮局将建在一些,但 ...

  9. Spring Cloud Gateway(六):路由谓词工厂 RoutePredicateFactory

    本文基于 spring cloud gateway 2.0.1 1.简介 Spring Cloud Gateway 创建 Route 对象时, 使用 RoutePredicateFactory 创建 ...

  10. Hadoop hadoop的介绍和几种模式

    Hadoop简介 Hadoop软件库是一个开源框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集.它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储.库本身不是依靠硬件来提 ...