python数据类型元组、字典、集合

元组

python的元组与列表类似,不同的是元组是不可变的数据类型。元组使用小括号,列表使用方括号。当元组里只有一个元素是必须要加逗号:

>>> x = (1,)
>>> type(x)
<class 'tuple'>
>>> y =(1)
>>> type(y)
<class 'int'>
>>> z = 1,
>>> type(z)
<class 'tuple'>
>>> z = 1,2
>>> type(z)
<class 'tuple'>
>>>

元组的特性:

  • 不可变

  • 可存放多个值

  • 按照从左到右的顺序定义元组元素,下标从0开始顺序访问,有序

元组创建

元组创建可以直接在括号里添加元素,也可以直接逗号赋值创建,还可以使用tuple函数,默认创建就是去调用tuple函数:

>>> tup1 = {'tom','jack','rain'}
>>> tup1 = ('tom','jack','rain')
>>> tup2 = (1,2,3,4,5)
>>> tup3 = 'a','b','c','d'
>>> type(tup1)
<class 'tuple'>
>>> type(tup2)
<class 'tuple'>
>>> type(tup3)
<class 'tuple'>
>>>
>>>> m = ['a','b','c']
>>> n = tuple(m)
>>> n
('a', 'b', 'c')
>>>

创建空元组:

>>> tup = ()
>> type(tup)
<class 'tuple'>
>>>

元组常用操作

索引和切片:

>>> x=(1,2,3,4,5)
1
>>> x[::-1]
(5, 4, 3, 2, 1)
>>> x[-2:]
(4, 5)
>>> x[::2]
(1, 3, 5)
>>>

循环:

>>> x=(1,2,3,4,5)
>>> for i in x:
print(i)
1
2
3
4
5
>>>

长度:

>>> x=(1,2,3,4,5)
>>> len(x)
5
>>>

成员运算(包含)

>>> x=(1,2,3,4,5)
>>> 1 in x
True
>>> '1' in x
False
>>>

字典

定义:{key1:value1,key2:value2},key-value结构,key必须可hash,即是key必须是不可变类型:

字典的特性:

  • 可存放多个值(键值对items)
  • 可修改指定key对应的值,可变
  • 无序

字典创建

person = {"name": "lucy", 'age': 18}



person = dict(name='lucy', age=18)

person = dict({"name": "lucy", 'age': 18})

person = dict((['name','lucy'],['age',18]))

person = dict((('name','bob'),('age',18)))

{}.fromkeys(seq,100) #不指定100默认为None

注意:

>>> dic={}.fromkeys(['k1','k2'],[])
>>> dic
{'k1': [], 'k2': []}
>>> dic['k1'].append(1)
>>> dic
{'k1': [1], 'k2': [1]}

字典常用操作

索引

因为字典是无序的,所以访问字典的值是通过键值来索引访问。

>>> dict1 = {'name': 'bob', 'age': 16, 'gender': 'male'}
>>> dict1['name']
'bob'
>>> dict1['age']
16

但是当输入的索引键在字典中没有会报错:

>>> dict1 = {'name': 'bob', 'age': 16, 'gender': 'male'}
>>> dict1['Age']
Traceback (most recent call last):
File "<pyshell#110>", line 1, in <module>
dict1['Age']
KeyError: 'Age'

程序里我们可以使用get()去访问字典中的值,即使键值字典里没有也不会报错。找到了就返回value,找不到默认不返回任何信息,可以自定义返回信息内容

>>> dict1 = {'name': 'bob', 'age': 16, 'gender': 'male'}
>>> dict1.get('Age')
>>>
>>> dict1.get('Age',-1)
-1
>>> dict1.get('Age','找不到')
'找不到'
>>> dict1.get('age')
16
>>>

新增和更新

增加items只需要直接赋值即可,更新也是一样的:

>>> d1 = {}
>>> d1['name'] = 'tom'
>>> d1['age'] = 18
>>> d1
{'name': 'tom', 'age': 18}
>>> d1['age'] = 20
>>> d1
{'name': 'tom', 'age': 20}
>>>

删除

del删除不会返回任何信息,删除键值不存在的会报错。

>>> d1
{'name': 'tom', 'age': 20}
>>> del d1['age']
>>> d1
{'name': 'tom'}
>>> del d1['Age']
Traceback (most recent call last):
File "<pyshell#124>", line 1, in <module>
del d1['Age']
KeyError: 'Age'
>>>

pop()删除和popitem()

pop()删除字典给定键 key 所对应的值,返回值为被删除的值。

>>> d1 = {'name': 'tom', 'age': 18}
>>> d1
{'name': 'tom', 'age': 18
>>> d1.pop('age')
18
>>> d1
{'name': 'tom'}
>>>

popitem()随机返回并删除字典中的一对键和值

>>> d1 = {'name': 'tom', 'age': 18}
>>> d1.popitem()
('age', 18)
>>>

循环

dict1 = {'name':'tom','age':20,'gender':'male','hobbie':'music'}
for i in dict1:
print(i)

运行结果:

name

age

gender

hobbie

for i in 字典 和 for i in 字典.keys()是一样的作用,都是遍历字典的键。

for i in 字典.items() 可以循环遍历字典的键值对:

	dict1 = {'name':'tom','age':20,'gender':'male','hobbie':'music'}
for i in dict1.items():
print(i)

运行结果:

('name', 'tom')

('age', 20)

('gender', 'male')

('hobbie', 'music')

	dict1 = {'name':'tom','age':20,'gender':'male','hobbie':'music'}
for k,v in dict1.items():
print('dict1[%s]=%s' %(k,v))

运行结果:

dict1[name]=tom

dict1[age]=20

dict1[gender]=male

dict1[hobbie]=music

长度

>>> d1 = {'name': 'tom', 'age': 18}
>>>> len(d1)
2
>>> len(d1.keys())
2
>>> len(d1.values())
2
>>>

集合

set是基本数据类型的一种集合类型,是一个无序不重复元素集。它有可变集合(set())和不可变集合(frozenset)两种。创建集合set、集合set添加、集合删除、交集、并集、差集的操作都是非常实用的方法。

集合的创建

创建一个数组集合:

>>> s1 = set([1,3,5,7,8])
>>> type(s1)
<class 'set'>
>>> s1
{1, 3, 5, 7, 8}
>>>

创建字符集合:

>>> s2 = set('Hello')
>>> type(s2)
<class 'set'>
>>> s2
{'l', 'H', 'e', 'o'}
>>>

上面的字符集合,里面只有一个'l'

集合常用操作

交集,并集,差集,对称差集

a = t | s        # t 和 s的并集

b = t & s        # t 和 s的交集

c = t – s        # 求差集(项在t中,但不在s中)

d = t ^ s        # 对称差集(项在t或s中,但不会同时出现在二者中)

添加

添加一项:

>>> s1 = set([1,3,5,7,8])
>>> s1.add(10)
>>> s1
{1, 3, 5, 7, 8, 10}
>>>

添加多项:

>>> s1 = set([1,3,5,7,8])
>>> s1.update([11,12,13])
>>> s1
{1, 3, 5, 7, 8, 11, 12, 13}
>>>

删除

删除一项,如果果不存在则报错,不报错可以使用discard(),discard删除元素,如果集合中有这个元素就删除,没有也不会报错。pop()随机删除集合的一个元素,返回值为随机删除的元素,集合为空时pop()会报错。 删除整个集合使用clear()

>>> s1 = {1, 3, 5, 7, 8,13}
>>> s1
{1, 3, 5, 7, 8, 13}
>>> s1.remove(13)
>>> s1
{1, 3, 5, 7, 8}
>>> s1.remove(14)
Traceback (most recent call last):
File "<pyshell#172>", line 1, in <module>
s1.remove(14)
KeyError: 14
>>> s1.discard(14)
>>> s1.discard(13)
>>> s1.discard(8)
>>> s1
{1, 3, 5, 7}

长度

集合的长度:

>>> s1 = {1, 3, 5, 7, 8,13}
>>> len(s1)
6
>>>

成员运算

>>> s1 = {1, 3, 5, 7, 8,13}
>>> 5 in s1
True
>>> '5' in s1
False
>>>

子集

>>> s1 = {'a','b','c'}
>>> s2 = {'a','b','c','d'}
>>> s1.issubset(s2)
True
>>>

父集

>>> s1 = {'a','b','c'}
>>> s2 = {'a','b','c','d'}
>>> s2.issuperset(s1)
True
>>>

交集

等价于 s1 & s2

>>> s1 = {'a','b','c','d'}
>>> s2 = {'a','c','e','f'}
>>> s1.intersection(s2)
{'c', 'a'}

并集

等价于 s1 | s2

>>> s1 = {'a','b','c','d'}
>>> s2 = {'a','c','e','f'}
>>> s1.union(s2)
{'b', 'e', 'd', 'c', 'f', 'a'}
>>>

差集

等价于 s1 - s2

>>> s1 = {'a','b','c','d'}
>>> s2 = {'a','c','e','f'}
>>> s1.difference(s2)
{'b', 'd'}
>>>

对称差集

等价于 s1 ^ s2

>>> s1 = {'a','b','c','d'}
>>> s2 = {'a','c','e','f'}
>>> s1.symmetric_difference(s2)
{'b', 'f', 'e', 'd'}
>>>

python数据类型之元组、字典、集合的更多相关文章

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

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

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

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

  3. 5. Python数据类型之元组、集合、字典

    元组(tuple) 元组创建很简单,只需要在小括号中添加元素,并使用逗号隔开即可.与列表不同的是,元组的元素不能修改.如下代码所示: tup1 = () tup2 = (1) tup3 = (1,) ...

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

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

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

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

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

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

  7. python 深浅拷贝 元组 字典 集合操作

    深浅拷贝 :值拷贝 :ls = [,,] res = ls 则print(res)就是[,,] 浅拷贝 :ls.copy() 深拷贝:ls3 = deepcopy(ls) # 新开辟列表空间,ls列表 ...

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

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

  9. Python数据类型详解——字典

    Python数据类型详解--字典 引子 已经学习了列表,现在有个需求--把公司每个员工的姓名.年龄.职务.工资存到列表里,你怎么存? staff_list = [ ["Kwan", ...

  10. 元组/字典/集合内置方法+简单哈希表(day07整理)

    目录 二十三.元组内置方法 二十四.字典数据类型 二十五 集合内置方法 二十五.数据类型总结 二十六.深浅拷贝 补充:散列表(哈希表) 二十三.元组内置方法 什么是元组:只可取,不可更改的列表 作用: ...

随机推荐

  1. CTF---Web入门第十三题 拐弯抹角

    拐弯抹角分值:10 来源: cwk32 难度:易 参与人数:5765人 Get Flag:2089人 答题人数:2143人 解题通过率:97% 如何欺骗服务器,才能拿到Flag? 格式:CTF{} 解 ...

  2. linphone-android-客户端APP-工程解读

    LinphoneLauncherActivity 是APP的入口组件,在这个组件里,它会启动LinphoneService这个后台服务,然后不断地判断这个后台服务是否已经启动完毕,如果已经启动完毕后, ...

  3. 关于React Native的那些坑

    好久没写博客了,特地把之前接触React Native时遇到的坑总结一下. 初始化一个React Native项目时,可能会遇到以下这些坑: 1.项目版本号与安卓模拟器中安装的 compileSdkV ...

  4. APP测试时常用adb命令

    ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备(手机),故在其实工作可以给我们 ...

  5. 【django基础补充之URL,视图,模版】

    一.url路由配置 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个URL调用这段代 ...

  6. jQuery:图片自动变换

    <script type="text/javascript"> var aa=0; //设置变换时间为2s var timeChange=2000; //定义数组 va ...

  7. thinkPHP内置字符串截取msubstr函数用法详解

    作者:陈达辉 字体:[增加 减小] 类型:转载 时间:2016-11-15 我要评论 这篇文章主要介绍了thinkPHP内置字符串截取函数用法,结合实例形式分析了thinkPHP内置的字符串截取函数功 ...

  8. 浅谈 C/S 和 B/S 架构

    概述 在这个信息急剧膨胀的社会,我们不得不说人类正进入一个崭新的时代,那就是信息时代.信息时代的一个主要而显著的特征就是计算机网络的应用.计算机网络从最初的集中式计算,经过了Client/Server ...

  9. Vue版本过渡变化

    到了2.0以后,有哪些变化: 在每个组件模板,不在支持片段代码 之前: <template id="aaa"> <h3>我是组件</h3>< ...

  10. JavaScript之事件委托(附原生js和jQuery代码)

    事件委托的原理依赖于事件冒泡,可以通过给父元素的事件委托来确定是哪个子元素触发了事件从而做一系列操作. 使用事件委托的优点 1.操作子元素时不用一一遍历,可以根据事件触发的对象而进行相应操作 dom结 ...