马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 caodouhao 于 2017-8-1 16:44 编辑
你可能发现了,小甲鱼把列表、元组和字符串放在一块儿来讲解是有道理的,我们发现Ta们之间有很多共同点: 1. 都可以通过索引得到每一个元素 2. 默认索引值总是从0开始(当然灵活的Python还支持负数索引) 3. 可以通过分片的方法得到一个范围内的元素的集合 4. 有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符)
所以我们把他们叁统称为:序列
下面,我们来介绍一些关于序列的常用BIF(内置方法)list(iterable) 把一个可迭代对象转换为列表 - >>> a = list()
- >>> a
- []
- >>> b = "l love fishC.com"
- >>> b = list(b)
- >>> b
- ['l', ' ', 'l', 'o', 'v', 'e', ' ', 'f', 'i', 's', 'h', 'C', '.', 'c', 'o', 'm']
- >>>
复制代码- >>> c = (1,1,2,3,5,8,13,21,34,)
- >>> c = list(c)
- >>> c
- [1, 1, 2, 3, 5, 8, 13, 21, 34]
- >>>
复制代码
tuple([iterable]) 把一个可迭代对象转换为元组
str(obj) 把obj对象转换为字符串
len(sub) 返回sub的长度
- >>> a
- []
- >>> len(a)
- 0
- >>> len(b)
- 16
- >>> b
- ['l', ' ', 'l', 'o', 'v', 'e', ' ', 'f', 'i', 's', 'h', 'C', '.', 'c', 'o', 'm']
- >>>
复制代码
max() 返回序列或者参数集合中的最大值
- >>> b
- ['l', ' ', 'l', 'o', 'v', 'e', ' ', 'f', 'i', 's', 'h', 'C', '.', 'c', 'o', 'm']
- >>> max(1,2,3,4,5)
- 5
- >>> max(b)
- 'v'
- >>>
复制代码 v的ASCII码值最大
- >>> numbers = [1,18,13,0,-98,34,54,76,32]
- >>> max(numbers)
- 76
- >>>
复制代码
min() 返回序列或者参数集合中的最小值
- >>> numbers = [1,18,13,0,-98,34,54,76,32]
- >>> max(numbers)
- 76
- >>> min(numbers)
- -98
- >>>
复制代码- >>> chars = "1234567890"
- >>> min(chars)
- '0'
- >>>
复制代码
- >>> tuple1 = (1,2,3,4,5,6,7,8,9,0)
- >>> max(tuple1)
- 9
- >>> min(tuple1)
- 0
- >>>
复制代码- >>> numbers
- [1, 18, 13, 0, -98, 34, 54, 76, 32]
- >>> numbers.append("a")
- >>> numbers
- [1, 18, 13, 0, -98, 34, 54, 76, 32, 'a']
- >>> max(numbers)
- Traceback (most recent call last):
- File "<pyshell#75>", line 1, in <module>
- max(numbers)
- TypeError: '>' not supported between instances of 'str' and 'int'
- >>>
复制代码 比较的类型必须一致。
sum(iterable[, start=0]) 返回序列iterable和可选参数start的总和
- >>> tuple2 = (1.1, 2.2, 3.3)
- >>> sum(tuple2)
- 6.6
- >>>
复制代码
- >>> numbers
- [1, 18, 13, 0, -98, 34, 54, 76, 32, 'a']
- >>> sum(numbers)
- Traceback (most recent call last):
- File "<pyshell#81>", line 1, in <module>
- sum(numbers)
- TypeError: unsupported operand type(s) for +: 'int' and 'str'
- >>> numbers.pop()
- 'a'
- >>> numbers
- [1, 18, 13, 0, -98, 34, 54, 76, 32]
- >>> sum(numbers)
- 130
- >>>
复制代码
- >>> chars
- '1234567890'
- >>> sum(chars)
- Traceback (most recent call last):
- File "<pyshell#87>", line 1, in <module>
- sum(chars)
- TypeError: unsupported operand type(s) for +: 'int' and 'str'
- >>> type(chars)
- <class 'str'>
- >>>
复制代码
sorted(iterable, key=None, reverse=False) 返回一个排序的列表,使用方法跟列表的内建函数(list.sort())一致,注意,这个 sorted()后边有“ed”哦。
- >>> numbers
- [1, 18, 13, 0, -98, 34, 54, 76, 32]
- >>> sorted(numbers)
- [-98, 0, 1, 13, 18, 32, 34, 54, 76]
- >>>
复制代码
reversed(sequence) 返回逆向迭代序列的值,一样道理,跟列表的内建函数(list.reverse())一致,注意,这个reversed()后边也多了个“d”哦。
- >>> numbers
- [1, 18, 13, 0, -98, 34, 54, 76, 32]
- >>> sorted(numbers)
- [-98, 0, 1, 13, 18, 32, 34, 54, 76]
- >>> reversed(numbers)
- <list_reverseiterator object at 0x02D0CB70>
- >>> list(reversed(numbers))
- [32, 76, 54, 34, -98, 0, 13, 18, 1]
- >>>
复制代码
enumerate(iterable) 生成由每个元素的index值和item值组成的元组
- >>> numbers
- [1, 18, 13, 0, -98, 34, 54, 76, 32]
- >>> enumerate(numbers)
- <enumerate object at 0x02C55F80>
- >>> list(enumerate(numbers))
- [(0, 1), (1, 18), (2, 13), (3, 0), (4, -98), (5, 34), (6, 54), (7, 76), (8, 32)]
- >>>
复制代码
zip(iter1 [,iter2 […]]) 返回由各个参数的序列组成的元组
- >>> a = [1,2,3,4,5]
- >>> b = [6,7,8,9,0]
- >>> zip(a,b)
- <zip object at 0x02C55F80>
- >>> list(zip(a,b))
- [(1, 6), (2, 7), (3, 8), (4, 9), (5, 0)]
- >>>
复制代码
序列相关经典代码分析
摘自:http://bbs.fishc.com/forum.php?mod=viewthread&tid=64566&ctid=252
1)通过输入考生名查找考生成绩并打印到屏幕上。首先定义一个由考生与对应成绩的元组组成的列表,允许用户输入考生名字,
如果在定义列表内则打印该考生成绩,如果不存在则输出不存在。
- information = [('小甲鱼',100),('黑夜',70),('怡静',80),('小布丁',60)]
- name = input('请输入需要查找的考生姓名:')
- I_find = False
- for each_name in information:
- if name in each_name:
- print('您查找的%s同学的成绩为%d分。'%(each_name[0],each_name[1]))
- I_find = True
- break
- if I_find == False:
- print('您查找的%s同学不存在该数据库内!!!'%name)
复制代码
================ RESTART: C:/Users/C/Desktop/1.py ================
请输入需要查找的考生姓名:hh
您查找的hh同学不存在该数据库内!!!
>>>
================ RESTART: C:/Users/C/Desktop/1.py ================
请输入需要查找的考生姓名:黑夜
您查找的黑夜同学的成绩为70分。
>>>
2)编写一段代码实现min()函数功能
- def min(itery):
- least = itery[0]
- for each in itery:
- if each <= least:
- least = each
- return least
- list1 = [1,2,3,4,5,-1,-2]
- least = min(list1)
- print('列表list1中最小的元素值为%d。'%least)
复制代码 ================ RESTART: C:/Users/C/Desktop/1.py ================
列表list1中最小的元素值为-2。
>>>
|