参考文档
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. 常见的HTML5语义化标签

    ​ <title>:页面主体内容.<hn>:h1~h6,分级标题,<h1> 与 <title> 协调有利于搜索引擎优化.<ul>:无序列表. ...

  2. seaborn模块的基本使用

    Seaborn是基于matplotlib的Python可视化库. 它提供了一个高级界面来绘制有吸引力的统计图形.Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图 ...

  3. 判断变量是否不为空,函数isset()、!empty()与!is_null()的比较

    转载:https://blog.csdn.net/qq_38812954/article/details/79581785 判断变量的值,尤其是判断他们是否不为空,我们有以下4种方法: if(isse ...

  4. java对象转换

    对象转换: 对象的分层涉及到各个层级之间的对象转换(Entity2DTO , DTO2VO, VO2DTO,DTO2Entity等),传统的采用set/get 方法硬编码实现写的代码比较多:或者采用B ...

  5. sql server if exists和 if not exists 的关键字用法

    if exists和if not exists关键字用法   1.介绍  if not exists 即如果不存在,if exists 即如果存在 2.使用  a.判断数据库不存在时  if not ...

  6. sql server 计算属性,计算字段的用法与解析

    SQL学习之计算字段的用法与解析   一.计算字段 1.存储在数据库表中的数据一般不是应用程序所需要的格式.大多数情况下,数据表中的数据都需要进行二次处理.下面举几个例子. (1).我们需要一个字段同 ...

  7. 批量给文件去BOM(百度网盘)

    链接:https://pan.baidu.com/s/1jC8RkyC0xX1lA-zZjOyDsw 提取码:geko 第一步:浏览你要移除BOM编码的文件夹.第二步:点击移除bom,随后会弹出提示框 ...

  8. Spring security invalid-session-url 的坑(配了permitAll仍然跳转到登录页)

    Spring security session配置中如果配了如下的invalid-session-url,配置了permitAll链接首次链接系统时会跳转到登录页,将该配置删除即可解决此问题. < ...

  9. getchar 和EOF

    本文章基于:http://www.cnblogs.com/QLinux/articles/2465329.html,稍作了修改. 大师级经典的著作,要字斟句酌的去读,去理解.以前在看K&R的T ...

  10. ansible user模块

    查看模块的功能和选项,使用ansible-doc命令 ansible-doc options: -l #查看所有可用的模块 -m #查看模块的路径 -v #查看版本 -t TYPE #查看插件,插件: ...