第六节课:元组和集合

第六节课:元组合集合

首先,看一下英文对应词汇
“迭代”-》"iteration"->(computer science) a single execution of a set of instructions that are to be repeated; "the solution took hundreds of iterations"
“递归”-》“recurse"->To execute a procedure recursively

现在谈一下对于这两个词汇的理解:
"迭代“, 指重复执行一个指令,用在python的list里,是指对重复调用list对象,将调用list对象返回的数据作为参数传给一个函数并由返回的结果组成一个新的list;
“递归”,指一个函数执行过程中调用了自己,是对一种计算方法的描述,对于python的list的调用显然用“递归”这个词汇不合适。

从字面上理解,“迭代”和“递归”也是不同的概念,“迭代”是重复某一过程,“递归”是调用自身,即“迭代”是循环操作,“递归”是嵌套操作。

可迭代对象: 就是说存在不重复的遍历其内部每一个子项的方法, 再简单点,就是是否能遍历.

有 __iter__()或者__next__()或者__getitem__() 方法的 都是可迭代对象

http://bbs.chinaunix.net/thread-1756603-1-1.html

一、元祖:
1. 有序的集合
2. 通过偏移量来索引
3. 属于不可变对象,不能在原地修改内容,没有排序、修改等操作

那为什么有元祖呢?
元祖不可变的好处: 保证数据的安全,比如我们将列表传给一个不熟悉的方法或者数据接口的时候,不知道方法或者数据接口是否会改变我们的输入数据。这时如果不想改变,这时候用元祖就可以了。

a = (1,2,3,‘a‘,‘b‘,‘c‘)
a1= list(a)

二、集合:集合是没有顺序概念的,所以不能用切片或者索引操作.

1. 创建一个集合。 可变集合 set() 不可变集合 frozenset()
2. 添加操作: add, update
3. 删除 remove
4. 成员关系:in not in
5. 交集 & 并集 | 差集 -
7. set去重,列表内容元素重复

2.1 可变集合

a.add
a.update
a.remove

示例演示

>>> b = set("abc")
>>> b
set([‘a‘, ‘c‘, ‘b‘])
>>> b.add("python")
>>> b
set([‘a‘, ‘python‘, ‘c‘, ‘b‘])
>>> b.remove("python")
>>> b
set([‘a‘, ‘c‘, ‘b‘])
>>> b.update("python")
>>> b
set([‘a‘, ‘c‘, ‘b‘, ‘h‘, ‘o‘, ‘n‘, ‘p‘, ‘t‘, ‘y‘])
>>> b = set("abc")
>>> b.add("python")
>>> b
set([‘a‘, ‘python‘, ‘c‘, ‘b‘])
>>> b.update("python")
>>> b
set([‘a‘, ‘c‘, ‘b‘, ‘python‘, ‘h‘, ‘o‘, ‘n‘, ‘p‘, ‘t‘, ‘y‘])
>>> a = (1,2,3,‘a‘,‘b‘,‘c‘)
>>> list(a)
[1, 2, 3, ‘a‘, ‘b‘, ‘c‘]
>>> tuple(list(a))
(1, 2, 3, ‘a‘, ‘b‘, ‘c‘)

2.2 不可变集合

a = frozenset(‘abc‘)
a.add 报错
a.remove 报错

时间: 2024-12-08 16:36:17

第六节课:元组和集合的相关文章

centos mysql 优化 第十六节课

centos mysql  优化  第十六节课 f

centos mysql 实战 第六节课 字符集

centos mysql 实战 第六节课    字符集 一定要研究清楚mysql安装脚本 字符集 乱码数据迁移1. 理解字符集怎么会事2. 不同的字符集进行转换 什么是字符集gbk , utf8 gb2312 latin1 一套符号编码规则 字符串都必须有相应的字符集,除了二进制没有字符集 校验字符集的概念流式传输 多字节latin1 单字节gbk 2字节utf8 3字节校验字符集的概念, 字为单位归类的方法,就是3类xxx_bin 以二进制形式存储区分大小写 SHOW CHARACTER SE

centos mysql 优化 第六节课

centos mysql  优化  第六节课 f

java学习日记-0722班赵理*:白天六节课,还有晚自习,晚上学到十二,真的很充实

时间过的很快,一个月的时间就这么匆匆而过了,有很多的收获与感慨,曾听过一句话,生命的意义在于奋斗,我算是理解了.                尚硅谷北京java培训这所神奇的学校真的很棒,没来着前就有蔡老师的细心解说,还有朱老师亲自带我找宿舍,虽然没说几句谢谢,但这种感激不敢遗忘.开始上课了,宋老师真的很牛,知识点讲的很全面,很细,仿佛回到了高中时代.老师是那么的和善,讲解时是那么的耐心,这是我从没遇到过的,宋老师还是很帅的,这是可以肯定的.尹老师负责班级管理,她很漂亮,当然笑起来更漂亮,穿衣

Linux学习第六节课-用户、组合权限

Linux学习第六节课 ---------------------------------------------------------------------------------------------------------------------------------------------------------------- 三十四.安全3A 认证Authentication 授权Authorization 审计Accounting 三十五.用户和组的配置文件 /etc/pas

C#第六节课

首先介绍了LINQ的用法 LINQ就是一个C#自带的数据库,实现的功能与主流的关系型数据库基本一致 ,它在对象领域和数据领域之间架起了一座桥梁,往往我们在编写日常的应用程序的时候很难绕开数据库的应用 在 Visual Studio 中,可以用 Visual Basic 或 C# 为以下数据源编写 LINQ 查询:SQL Server 数据库.XML 文档.ADO.NET 数据集,以及支持 IEnumerable 或泛型 IEnumerable<T> 接口的任意对象集合. 此外,还计划了对 AD

centos linux系统日常管理3 第十六节课

上半节课 下半节课 Linux系统服务管理 ntsysv工具ntsysv 类似图形界面管理工具,如果没有该命令安装  yum install -y ntsysv  常用服务:crond, iptables, network, sshd, syslog, irqbalance, sendmail, microcode_ctl 保存后需要reboot才能生效 chkconfig (命令行服务管理工具) 列出服务列表: chkconfig --list 关闭2级别 : chkconfig --leve

0520 第六节课

特殊权限的说明及用法直接并到上一节课的笔记的末尾 文本处理工具 1.cut:将数据以某分割符为界切成几段,并提取其中一段 -d: d后面直接跟分隔符 -f: f后面跟想要提取的段数,多段用,隔开 2.more/less:翻页显示 COMMAND |more/less -d  :d是一些简单的帮助提示 3.head:显示头几行 -#: 显示前边#行 4.tail:显示末尾几行 -#:显示末尾#行 -f:监控末尾添加,一般是配合&后台使用 -n +k: 从第k行开始显示 5.paste:合并命令 -

【非凡程序员】 OC第六节课 (枚举,字典,结构体,NSRange,CG类型,NSnumber,空)

#import <Foundation/Foundation.h>#import "Article.h"#import "Person.h" int main(int argc, const char * argv[]) {    @autoreleasepool { //自动释放池 (半自动) //-------------------------枚举类---------------------------------//     NSArray *p