第六节课:元组合集合
首先,看一下英文对应词汇
“迭代”-》"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 报错