Python学习日记(四) 集合和元祖
元祖的特性:是一个只读列表、可以循环、可以切片,修改数据遵循'儿子'不能改但'孙子'可能可以改。
iterable:可迭代对象(元祖、列表、字串、集合)
元祖宣告方式:
tu = (1,2,3,['a','b',1],'str') #(1, 2, 3, ['a', 'b', 1], 'str')
元祖索引切片:
tu = (1,2,3,['a','b',1],'str') #(1, 2, 3, ['a', 'b', 1], 'str') print(tu[1]) #2 print(tu[-2]) #['a', 'b', 1] print(tu[1:3]) #(2, 3) print(tu[-1:2:-1]) #('str', ['a', 'b', 1]) print(tu[::1]) #(1, 2, 3, ['a', 'b', 1], 'str') print(tu[::-2]) #('str', 3, 1)
查:
for i in tu:print(i) #1 #2 #3 #['a', 'b', 1] #str
tu.index():
通过元素找索引,可以切片,找到该元素则返回第一个元素索引值,找不到则报错
print(tu[::-2].index(3)) #1 print(tu.index(['a','b',1])) #3
tu.count():
tu = (1,2,3,['a','b',1],'str',2,2) print(tu.count(2)) #3
len(tu):
tu = (1,2,3,['a','b',1],'str',2,2) print(len(tu)) #7
改:
因为元祖为只读列表里面的数据不能改动,但是其子元素内部的元素可能可以改动。
tu =((1,2,'a'),['a','b',1],'a',1,{1,2})tu[0][2] = 'z' print(tu) #'tuple' object does not support item assignment tu[1][2] = 'z' print(tu) #((1, 2, 'a'), ['a', 'b', 'z'], 'a', 1, {1, 2}) tu[2] = 'z' print(tu) #'tuple' object does not support item assignment tu[3] = 1 print(tu) #'tuple' object does not support item assignment tu[4][0]= 5 print(tu) #'set' object does not support item assignment
集合的特性:集合本身是一个可变的数据类型,但其中的元素是不可变的数据类型。它也有着无序、不重复的特点。
把一个列表转成集合就可以做到去重复的效果。
集合宣告方式:
当创建一个空集合时要用set(),不能用{ }
a = set() #set() b = set({1,'a',False,'a'}) #{False, 1, 'a'} c = {1,2,'a','c','c'} #{1, 2, 'c', 'a'}
增:
set.add():
将元素无序的添加至集合中,若该元素已存在则不进行任何操作
a = set({1,2,3,'a',(1,2)}) a.add(1) print(a) #{(1, 2), 1, 2, 3, 'a'} a.add('ab') print(a) #{(1, 2), 1, 2, 3, 'ab', 'a'}
set.update():
将元素迭代并无序加入以逗号隔开
a = set({1,2,3,'a',(1,2)}) a.update('abc') #{(1, 2), 1, 2, 3, 'b', 'c', 'a'} a.update({'key1' : 12,'key2' : 'c','key3' : 0}) #{(1, 2), 1, 2, 3, 'key2', 'key3', 'key1', 'a'} a.update([6,5]) #{(1, 2), 1, 2, 3, 5, 6, 'a'} a.update((1,9,'a')) #{(1, 2), 1, 2, 3, 9, 'a'} a.update(set({5,6})) #{(1, 2), 1, 2, 3, 5, 6, 'a'}
删:
set.pop():
随机删除集合中的一个元素,并返回结果
a = set({1,2,3,'a',(1,2)}) print(a.pop()) #(1, 2) b = set() print(b.pop()) #'pop from an empty set'
set.remove():
在集合中删除一个元素,如果元素不存在则返回错误
a = set({1,2,3,'a',(1,2)}) a.remove(1) print(a) #{(1, 2), 2, 3, 'a'} a.remove(1) print(a) #KeyError: 1
set.clear():
清空整个集合
a = set({1,2,3,'a',(1,2)}) a.clear() print(a) #set()
del:
删除该集合
a = set({1,2,3,'a',(1,2)}) del a print(a) #name 'a' is not defined
set.discard():
移除集合中的某个元素,若果元素不存在则不会报错
a = set((1,'a',5)) a.discard(1) #{5, 'a'} print(a)b = set(((1,'a',5),2)) b.discard(1) #{2, (1, 'a', 5)} print(b)
改:
因为集合内部为不可变数据类型所以无法修改其中的元素。
查:
a = {1,2,'a',False,'abc'} for i in a:print(i) #False #1 #2 #abc #a
求交集:
交集定义:集合论中,设A,B是两个集合,由所有属于集合A且属于集合B的元素所组成的集合,叫做集合A与集合B的交集(intersection),记作A∩B。
a = {1,2,3,4} b = {2,4,5,6} print(a & b) #{2, 4} print(a.intersection(b)) #{2, 4}
求并集:
并集定义:给定两个集合A,B,把他们所有的元素合并在一起组成的集合,叫做集合A与集合B的并集,记作A∪B。
a = {1,2,3,4} b = {2,4,5,6} print(a | b) #{1, 2, 3, 4, 5, 6} print(a.union(b)) #{1, 2, 3, 4, 5, 6}
求反交集:
a = {1,2,3,4} b = {2,4,5,6} print(a ^ b) #{1, 3, 5, 6} print(a.symmetric_difference(b)) #{1, 3, 5, 6}
求差集:
就是找前面一个集合独有的
a = {1,2,3,4} b = {2,4,5,6} print(a - b) #{1, 3} print(a.difference(b)) #{1, 3} print(b - a) #{5, 6} print(b.difference(a)) #{5, 6}
判断是否为子集:
若原集合中的所有元素都包含在指定集合中,返回True,否则返回False
a = {1,2,3} b = {'a',1,2,3,4,5,6} print(a < b) #True print(a.issubset(b)) #True
判断是否为超集:
判断指定集合中的元素是否包含在原集合中,有则返回True,否则返回False
a = {1,2,3} b = {'a',1,2,3,4,5,6} print(b > a) #True print(b.issuperset(a)) #True
其他:
1.将列表中的元素去重复成一个新的列表(不考虑算法)
a = [1,2,2,33,33,5,6,7,'a','b','a'] a = list(set(a)) print(a) #[1, 2, 33, 'b', 5, 6, 7, 'a']
2.将set()转变为不可变数据类型
a = set({1,2,'a'}) b = {5,7,a} print(b) #unhashable type: 'set'
a = set({1,2,'a'}) a = frozenset(a) print(a,type(a)) #frozenset({1, 2, 'a'}) <class 'frozenset'> b = {a,4,5} print(b) #{4, 5, frozenset({1, 2, 'a'})}
3.什么元素转化为布尔值为False?
0、[]、()、{}、set()、' '
4.数字和元祖
tu1 = ((100)) tu2 = ((100,)) print(tu1,type(tu1)) #100 <class 'int'> print(tu2,type(tu2)) #(100,) <class 'tuple'>
元祖里面只有一个元素且不加逗号,那么此元素是什么类型就是什么类型
5.当for循环删除列表中元素时都会产生一个新的列表
li = [1,2,3,4,5,6] for i in range(len(li)):del li[i]print(li)#第一次删除 i = 0,对应索引值 li[i] = 1,删除后列表 li = [2, 3, 4, 5, 6] #第二次删除 i = 1,对应索引值 li[i] = 3,删除后列表 li = [2, 4, 5, 6] #第三次删除 i = 2,对应索引值 li[i] = 5,删除后列表 li = [2, 4, 6] #第四次删除 i = 3,报错 因为到这时候列表的长度是3,小于元素的索引值
将奇数位的数删除:
方法一
li = [1,2,3,4,5,6] li = li[::2] print(li)
方法二
li = [1,2,3,4,5,6] l1 = [] for i in li:if li.index(i) % 2 == 0:l1.append(i) li = l1 print(li) #[1, 3, 5]
6.在遍历一个字典时,不能删除它的键值对
若要删除字典中含'k'的元素:
dic = {'key1' : 2,'key2' : 3,'key3' : 'a','aey4' : 5} for i in dic:if 'k' in i:del dic[i] #RuntimeError: dictionary changed size during iteration
解决方案:
方法一:
dic1 = {} for i in dic:if 'k' not in i:dic1.setdefault(i,dic[i]) dic = dic1 print(dic) #{'aey4': 5}
方法二:
l = [] for i in dic:if 'k' in i:l.append(i) for i in l:del dic[i] print(dic) #{'aey4': 5}
转载于:https://www.cnblogs.com/Fantac/p/11247911.html
Python学习日记(四) 集合和元祖相关推荐
- SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理
SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理 本文连接 简介 SIGIA_4P 网址 a. 课程OKR Objectives and ...
- Python学习日记——罗马数字转整数
Python学习日记004--罗马数字转整数 题目来源:LeetCode题库--罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 ...
- Python学习笔记:集合(set)
Python学习笔记:集合(set) 1.集合概念 集合是互异元素的无序集合.类似于只有键没有值的字典. 2.创建集合 有两种方法创建集合:一个是利用set函数,一个是利用花括号创建集合字面量. 3. ...
- Python学习日记-day1基础篇 字符 输出 注释
Python学习日记-day1基础篇 字符 输出 注释 by北栀一刺 # -*- coding: utf-8 -*- """ Spyder EditorThis is a ...
- python学习日记(第一周)
python学习日记(第一周) 前言: 无论出于什么目的,学个程序语言吧.之前学过一点点基础语法,然后就搁置了两年,日记仅作为个人记录,有问题还望不吝赐教 其实这玩意儿应该每次学一部分记录一部分的,好 ...
- Python学习日记-pandas操作学习
Python学习日记-pandas模块学习 根据需求筛选数据 绘制柱状图-利用pandas绘制 绘制柱状图-利用matplotlib绘制 绘制柱状图-两组数据比较 绘制柱状图-叠加柱状图 绘制饼状图 ...
- 菜菜的Python学习日记 | Python类实验代码分享
系列索引:菜菜的Python学习日记 | Python从入门到入土详解 Python类实验代码分享 编写程序,实现以下功能. (1)创建员工类Employee,属性有姓名name.能力值ability ...
- 菜菜的Python学习日记 | 正则表达式你必须了解的知识点
系列索引:菜菜的Python学习日记 | Python从入门到入土详解 文章目录 常用规则 Python对正则表达式的支持 常用规则 符号 解释 示例 说明 . 匹配任意字符 b.t 可以匹配bat ...
- python学习日记2-3周
python学习日记2-3周 怠惰怠惰 improt 导入 import phone.apple.iphone6 import phone.apple.iphone7 import phone.sam ...
最新文章
- 科沃斯扫地机器人哪个型号最实用_科沃斯扫地机器人哪款好?
- 赠票 | 面见AI大神贾扬清!阿里云峰会船票抢先送~(上海站)
- INVEST优秀用户故事的特点
- Python机器学习(1)-- 自己设计一个感知机(Perceptron)分类算法
- 底层框架_你有必要了解一下Flink底层RPC使用的框架和原理
- 大学计算机科学不会编码,华中科技大学人员编号编码管理办法
- UVa 297 四分树
- Windows Server 2008 R2无法远程桌面解决方法
- 2017.6.26 旅行 思考记录
- php xml解析为数组,PHP如何将XML转成数组
- python相关性分析特征过滤_Python相关性分析
- AndroidTV开发12——大屏TV电视及盒子Apk远程安装说明文档
- C1083,无法打开包括文件...
- 私有云的优缺点_私有云服务器的优缺点
- 001.学习Python之-设置你的操作系统的环境变量,以便可以轻松进入 Python 环境
- 835616-60-9,4-Fluoro-thalidomide用于补充CRBN蛋白的沙利度胺基脑啡肽配体
- 单绞机控制算法模型(Simulink仿真)
- 《精读 Mastering ABP Framework》教程发布
- includes()的用法
- python自动读取短信_自动化测试-自动获取手机短信验证码