day06数据类型----元组、字典、集合
一、元组(tuple):
python中将一些不能修改的值称为不可变的,而不可变的列表则被称之为元组。
注意元组一旦被定义则不可修改,因此一般我们不定义空元组。
元组是有序的,可存放多个数据|,不可变类型(但是如果元组中包含可变对象时,
可变对 象时依旧可变的。)
应用场景:是将不允许操作的列表可以转化为元组,将允许操作的元组转化为列表。
1.1、如何定义一个只有一个值得元组
# 如何定义一个只有一个元素的元组
print(('qzk',)) # ('qzk',)
print(tuple(['qzk2'])) # ('qzk2',)
1.2、索引取值
# 索引取值
t = (1, 2, 3, 2, 2, 1, 2, 3, 4, 3, 2)
print(t[0]) #
print(t[-1]) #
1.3、切片
t = (1, 2, 3, 2, 2, 1, 2, 3, 4, 3, 2) # 切片
print(id(t)) #
new_t1 = t[:-1:] # (1, 2, 3, 2, 2, 1, 2, 3, 4, 3) 是从0位取到倒数第二位,(-1)位不考虑(顾头不顾尾)
new_t2 = t[-6:-1:1] # (1, 2, 3, 4, 3)
new_t3 = t[-6:-1:-1] # ()
new_t4 = t[-1:-6:1] # ()
new_t5 = t[-1:-6:-1] # (2, 3, 4, 3, 2)
print(new_t1)
print(new_t2)
print(new_t3)
print(new_t4)
print(new_t5)
print(id(new_t1)) #
1.4、长度运算(len()):实际求取的是items的个数
# 长度运算(len())
t = (1, 2, 3, 2, 2, 1, 2, 3, 4, 3, 2)
print(len(t)) #
1.5、内置方法:主要与两个 .count()、.index()
.count() 返回的是value的次数
.index(self, value, start=None, stop=None) ,返回的是第一个索引到值的位置。
def count(self, value): # real signature unknown; restored from __doc__
""" T.count(value) -> integer -- return number of occurrences of value """
return 0 def index(self, value, start=None, stop=None): # real signature unknown; restored from __doc__
"""
T.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.
"""
return 0
# 元组内置方法
t = (1, 2, 3, 2, 2, 1, 2, 3, 4, 3, 2)
print(t.count(3)) # 该数据集合可以存放相同数据 # 3
print(t.index(2, 2, 4)) #
二、字典(dict) :
字典是python中仅存的mapping类型。
字典是无序的,可变类型,可存放多个数据,是通过键值对(key:value)来取值的。
字典的key 可以为所有不可变类型:int float tuple str bool 等。
value 可以为所有可变类型
在字典中key 具有唯一性(重复会覆盖旧值),value可以重复。
2.1、声明字典的方式:
d1 = {'name': 'qzk', 'age': 18}
print(d1)
d2 = dict({'name': 'qzk', 'age': 18})
print(d2)
d3 = dict(name='egon', age=18)
print(d3)
2.2、增删改查
# 增加
dic = {}
dic['name'] = 'qzk'
dic['age'] = 18
print(dic) # 改
dic['name'] = 'qzk1'
print(dic) # 查
print(dic['age']) # 删除
del dic['name']
print(dic) # {'name': 'qzk', 'age': 18}
# {'name': 'qzk1', 'age': 18}
#
# {'age': 18}
2.3、内置方法
# .get() 取值,相当于查询作用 dic12 = {'a': 10, 'b': 20}
# print(dic['c']) # KeyError
res = dic12.get('c') # 拥有默认值,None。可以避免错误
print(res)
res = dic12.get('d', 'key不存在') # 默认值是None,可以自定义默认值
print(res) # 增:.update()
dic12.update({'a': 100, 'c': 300})
print(dic12) # 添加的参数字典,与dic重复就是更新字典,新的key就是新增字典 # 删:.pop()
res = dic12.pop('c') # 根据key删除指定对象,并返回删除的对象
print(res) # 复制:(浅拷贝|深拷贝)
d1 = {'list': [1, 2]}
d2 = d1.copy()
print(id(d1), id(d1['list']))
print(id(d2), id(d2['list']))
d1['list'].append('abc')
print(d2) # 如何定义一个空字典; dic11 = {}.fromkeys(['a', 'b', 'c']) # {'a': None, 'b': None, 'c': None}
print(dic11)
dic13 = {}.fromkeys(['a', 'b', 'c'], [1, 2, 3]) # {'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [1, 2, 3]}
print(dic13) # setdefault(key,value)
# 语法:dict.setdefault(key, default=None)
# python 字典 setdefault() 函数和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。
# 返回值:如果 key 在 字典中,返回对应的值。如果不在字典中,则插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None。
dic13.setdefault('teas', [])
dic13['teas'].append('egon')
dic13['teas'].append('qzk')
print(dic13) # None
# key不存在
# {'a': 100, 'b': 20, 'c': 300}
#
# 34734368 34757192
# 41813552 34757192
# {'list': [1, 2, 'abc']}
# {'a': None, 'b': None, 'c': None}
# {'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [1, 2, 3]}
# {'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [1, 2, 3], 'teas': ['egon', 'qzk']}
三、集合(set):
定义与声明:
集合分为单列数据集合和双列数据集合
集合是无序存储,无key 无索引,无法取值
集合是可变数据类型,内部可以存放任意数据类型的数据,且具有唯一性****
常用操作:
s1 = set()
s2 = set('ABC')
print(s1, type(s1))
print(s2, type(s2)) # set() <class 'set'>
# {'C', 'A', 'B'} <class 'set'>
交集、并集、差集、对称差集运算
p_set = {'a', 'b', 'c', 'd'}
l_set = {'x', 'y', 'z', 'a', 'b'}
# 交集&
res = p_set & l_set
print(res)
res = p_set.intersection(l_set)
print(res) # {'a', 'b'}
# {'a', 'b'} # 并集
res = p_set | l_set
print(res)
res = p_set.union(l_set)
print(res) # {'b', 'z', 'd', 'y', 'c', 'x', 'a'}
# {'b', 'z', 'd', 'y', 'c', 'x', 'a'} # 差集
res = p_set - l_set
print(res)
res = p_set.difference(l_set)
print(res)
res = l_set.difference(p_set)
print(res) # {'d', 'c'}
# {'d', 'c'}
# {'z', 'y', 'x'} # 对称差集
res = p_set ^ l_set
print(res)
res = p_set.symmetric_difference(l_set)
print(res)
print(p_set)
print(l_set) # {'z', 'd', 'y', 'c', 'x'}
# {'z', 'd', 'y', 'c', 'x'}
# {'a', 'd', 'c', 'b'}
# 如上一些操作带——update的 是作用结果赋值给调用者
# 添加删除操作
s = set()
s.add('abc')
s.add('xyz')
print(s) if 'xyz' in s:
s.remove('xyz') # 有element 删除,无ele 抛异常 res = s.pop() # 随机删除一个
class_map = [
('owen', 'python'),
('egon', 'linux'),
('egon', 'python'),
('liu', 'java'),
('liu', 'linux')
]
#
# 需求:
# 1多少人参加选课:['owen','egon','liu']
names = []
for name, _ in class_map:
# 判断列表中是否已存在,不存在才添加
if name not in names:
names.append(name)
print(names) classes = set()
for _, cless in class_map:
classes.add(cless)
classes = list(classes)
print(classes) # ['owen', 'egon', 'liu']
# ['python']
day06数据类型----元组、字典、集合的更多相关文章
- **python中列表 元组 字典 集合
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...
- 元组/字典/集合内置方法+简单哈希表(day07整理)
目录 二十三.元组内置方法 二十四.字典数据类型 二十五 集合内置方法 二十五.数据类型总结 二十六.深浅拷贝 补充:散列表(哈希表) 二十三.元组内置方法 什么是元组:只可取,不可更改的列表 作用: ...
- python中列表 元组 字典 集合的区别
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...
- python_列表——元组——字典——集合
列表——元组——字典——集合: 列表: # 一:基本使用# 1.用途:存放多个值 # 定义方式:[]内以逗号为分隔多个元素,列表内元素无类型限制# l=['a','b','c'] #l=list([' ...
- python3笔记十八:python列表元组字典集合文件操作
一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle #数据持久性模块 #封装的方法def OptionData(data,path): # ...
- day_6深浅拷贝,元组字典集合类型定义和各种操作方法
首先我们来讲一下深浅拷贝 1:值拷贝,假设一个列表等于L1 再定义一个L2=L1 这样就是值拷贝 L2只是存的L1存列表的地址,所以当L1发生改变,L2也随之改变 2:浅拷贝,L2=L1.copy( ...
- python的学习笔记01_4基础数据类型列表 元组 字典 集合 其他其他(for,enumerate,range)
列表 定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性: 1.可存放多个值 2.可修改指定索引位置对应的值,可变 3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问 ...
- Day 07 数据类型的内置方法[列表,元组,字典,集合]
数据类型的内置方法 一:列表类型[list] 1.用途:多个爱好,多个名字,多个装备等等 2.定义:[]内以逗号分隔多个元素,可以是任意类型的值 3.存在一个值/多个值:多个值 4.有序or无序:有序 ...
- Python数据类型-布尔/数字/字符串/列表/元组/字典/集合
代码 bol = True # 布尔 num = 100000000; # 数字 str = "fangbei"; # 字符串 str_cn = u"你好,方倍" ...
随机推荐
- IQuerable与IEnumable的区别
核心区别: IQueryable该接口会把查询表达式先缓存到表达式树Expression 中,只有当真正用到数据的时候(例如 遍历 ),才会由IQueryProvider解析表达式树,生成sql语句执 ...
- [PHP] 算法-镜像二叉树的PHP实现
操作给定的二叉树,将其变换为源二叉树的镜像. 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 思 ...
- [css] css3 中的新特性加强记忆
css3被拆分成如下的小模块,选择器,盒模型,背景和边框,文字特效,2D/3D转换,动画,多列布局和用户界面 2D转换 使用transform:属性来为元素设置2D转换,兼容浏览器加前缀 –webki ...
- RSA key format is not supported
对接支付宝时,提示RSA错误 : 请仔细检查 : 创建支付对象时,关键字参数的名字 如果公私钥是以拼接路径的方式传递给AliPay,正确的关键字参数的名字应该如下 :
- CSS水平居中的三种方法
CSS中经常会用到元素居中,那么今天我为大家分享几种水平居中的方法,下面代码都可以达到同样的居中效果,来不及解释了,快上马(码): 一.margin : 0 auto; <head> &l ...
- IntelliJ idea连接操作DB2数据库
一.场景 一直都是用navicat作为数据库的连接工具,但是navicat不支持连接DB2,网上也推荐很多其它软件工具,但是因为DB2用的场景不多,这次只是开发etl工具需要测试数据库,正好发现ide ...
- Salesforce的Developer Console简介
Developer Console是Salesforce提供的一个基于浏览器的集成开发环境.在Developer Console中,开发者可以新建.修改各种Apex.Visualforce.Light ...
- 新浪微博POI点签到数据及可视化的初步成果
目前仅对山东省区域进行了抓取,权限不够高,抓取的速度非常慢,所以导致效率比较低... 数据抓取采用调用微博开放平台API的方法,数据存储采用mysql,格点数据分辨率为30″,山东省的MBR范围内(包 ...
- Mac 的mysql5.7没有配置文件,如何解决only_full_group_by 问题
数据库版本是5.7.19,在写语句的时候,只要涉及ORDER BY,就会报错, ERROR 1055 (42000): Expression #7 of SELECT list is not in G ...
- 关键字提取算法TF-IDF和TextRank(python3)————实现TF-IDF并jieba中的TF-IDF对比,使用jieba中的实现TextRank
关键词: TF-IDF实现.TextRank.jieba.关键词提取数据来源: 语料数据来自搜狐新闻2012年6月—7月期间国内,国际,体育,社会,娱乐等18个频道的新闻数据 数据处 ...