鱼C论坛

 找回密码
 立即注册
查看: 7748|回复: 31

[技术交流] 016讲:序列相关内置函数介绍

[复制链接]
发表于 2015-9-4 16:56:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 醉酒青牛 于 2016-5-21 21:41 编辑

本期内容导读:
        这一期我们归纳一下鱼神第十六讲“序列!序列!”。这一期里面鱼神主要介绍了字符串,列表和元组作为序列所具有的一些共同特点以及序列的内置函数用法,主要为list(),tuple(),str(),len(),sum(),max(),min(),sorted(),reversed(),enumerate()和zip()。下面我们就来详细介绍一下各个知识点吧~~~~~~

1.字符串、元组、列表作为序列的一些共同特点
1)都可以通过索引访问其元素,举例说明
>>> str = 'I love FishC.com'
>>> str[0]
'I'
>>> list = [1,2,3,4]
>>> list[1]
2
>>> turple1 = (1,2,3,4)
>>> turple1[1]
2
2)默认索引值都是从0开始
        当然,在python中元素负值索引。
3)通过分片方式可以得到多个元素组成的新的序列类型,举例说明
>>> str1 = "I love FishC.com"
>>> str1[:10]
'I love Fis'
>>> list1 = ['小甲鱼','醉酒青牛',123]
>>> list1[1:]
['醉酒青牛', 123]
4)有许多共同的操作符,例如重复操作符*,拼接操作符+,成员操作符in  not in等

2. 序列的内置函数
1)list()函数
    list() -> new empty list
    list(iterable) -> new list initialized from iterable's items
将一个可迭代对象强制转换为列表,如果没有参数时,返回一个空列表,举例说明
>>> str1 = 'I love FishC.com'
>>> list1 = list(str1)
>>> list1
['I', ' ', 'l', 'o', 'v', 'e', ' ', 'F', 'i', 's', 'h', 'C', '.', 'c', 'o', 'm']
>>> tuple1 =(1,2,3,4)
>>> list2 = list(tuple1)
>>> list2
[1, 2, 3, 4]
2)tuple()函数,将可迭代对象转换为元组,举例说明
>>> list1 = ['I', ' ', 'l', 'o', 'v', 'e', ' ', 'F', 'i', 's', 'h', 'C', '.', 'c', 'o', 'm']
>>> tuple1 = tuple(list1)
>>> tuple1
('I', ' ', 'l', 'o', 'v', 'e', ' ', 'F', 'i', 's', 'h', 'C', '.', 'c', 'o', 'm')
3)str()函数,将可迭代对象强制转换为字符串
class str(object)
|  str(object='') -> str
|  str(bytes_or_buffer[, encoding[, errors]]) -> str
一般情况下,我们可以将任何一个数据类型强制转换为字符串
>>> m =5
>>> str1 = str(m)
>>> str1
'5'
len()函数
len(module, object)
Return the number of items of a sequence or mapping.
4)len()函数,统计一个可迭代对象的长度并返回长度值,举例说明
>>> str1 = 'I love FishC.com'
>>> len(str1)
16
>>> list1 = [1,3,7]
>>> len(list1)
3
>>> tuple1= (1,2,3,4)
>>> len(tuple1)
4
5)max()和min()函数,比较可迭代对象内元素最大值和最小值并返回,要求所有元素类型必须一致,举例说明
>>> list1 = [12,56,78,56.1]
>>> max(list1)
78
>>> min(list1)
12
>>> str1 = '1234567890'
>>> max(str1)
'9'
>>> min(str1)
'0'
6)sum()函数,将序列内所有元素值求和并给出,这里面要求序列内元素数据类型一致且为数值类型
sum(iterable[, start]) -> value
    Return the sum of an iterable of numbers (NOT strings) plus the value
    of parameter 'start' (which defaults to 0).  When the iterable is
    empty, return start.
返回可迭代对象内的所有元素的和,如果start赋值的话再加上start的值,当可迭代对象为空,则返回start的值,举例说明
>>> list1 = [1,5,9]
>>> sum(list1)
15
>>> sum(list1,5)
20
>>> list2 = list()
>>> sum(list2)
0
>>> sum(list2,1)
1
7)sorted()函数
sorted(iterable, key=None, reverse=False) --> new sorted list
对可迭代对象内的所有元素进行排序,默认从小到大,举例说明
>>> list1 = [1,7,3,8,3,2,16,9]
>>> sorted(list1)
[1, 2, 3, 3, 7, 8, 9, 16]
>>> sorted(list1,reverse=True)
[16, 9, 8, 7, 3, 3, 2, 1]
8)reversed()函数
|  reversed(sequence) -> reverse iterator over values of the sequence
|  Return a reverse iterator
将可迭代对象中所有元素转置并返回新的对象,举例说明
>>> list1 = [1,2,3]
>>> reversed(list1)
<list_reverseiterator object at 0x023EFF30>
>>> list(reversed(list1))
[3, 2, 1]
9)enumerate()函数
enumerate(iterable[, start]) -> iterator for index, value of iterable
|  
|  Return an enumerate object.  iterable must be another object that supports
|  iteration.  The enumerate object yields pairs containing a count (from
|  start, which defaults to zero) and a value yielded by the iterable argument.
|  enumerate is useful for obtaining an indexed list:
|      (0, seq[0]), (1, seq[1]), (2, seq[2]), ...
将可迭代对象的每一个元素与其对应的索引值组成一个元组并返回这个由元组组成的可迭代对象,举例说明
>>> list1 = ['小甲鱼','小甲虫','小牛牛']
>>> enumerate(list1)
<enumerate object at 0x023C0F80>
>>> list(enumerate(list1))
[(0, '小甲鱼'), (1, '小甲虫'), (2, '小牛牛')]
zip()函数
|  zip(iter1 [,iter2 [...]]) --> zip object
|  
|  Return a zip object whose .__next__() method returns a tuple where
|  the i-th element comes from the i-th iterable argument.  The .__next__()
|  method continues until the shortest iterable in the argument sequence
|  is exhausted and then it raises StopIteration.
将多个可迭代对象中对应的元素组成一个元组,并返回一个可迭代对象,举例说明
>>> list1 = [1,2,3,4]
>>> list2 = ['a','b','c','d']
>>> tuple1 = ('小甲鱼','小甲虫','小牛牛')
>>> zip(list1)
<zip object at 0x018BC7B0>
>>> list(zip(list1))
[(1,), (2,), (3,), (4,)]
>>> list(zip(list1,list2))
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
>>> list(zip(list1,list2,tuple1))
[(1, 'a', '小甲鱼'), (2, 'b', '小甲虫'), (3, 'c', '小牛牛')]
3. 序列的内置函数与元组、列表的内置函数最大区别是,序列的内置函数的参数一般是序列
例如sorted()是序列的一个内置函数,而sort()为列表、元组的内置函数,通过例子比较其区别:
>>> list1 = [1,3,2,7]                #定义列表类序列
>>> sorted(list1)                    #通过对序列本身进行排序,获取新的序列
[1, 2, 3, 7]
>>> list1                                 #list1本身并没有改变
[1, 3, 2, 7]
>>> list1.sort()                       #使用列表list1内置函数,改变其本身
>>> list1
[1, 2, 3, 7]
4. 序列相关经典代码分析
1)通过输入考生名查找考生成绩并打印到屏幕上。首先定义一个由考生与对应成绩的元组组成的列表,允许用户输入考生名字,
如果在定义列表内则打印该考生成绩,如果不存在则输出不存在。

  1. information = [('小甲鱼',100),('小鲤鱼',70),('小黄鱼',80),('小青鱼',60),('小黑鱼',90)]  #自建的考生名字->成绩序列
  2. name = input('请输入需要查找的考生姓名:')
  3. I_find = False                          #默认输入的用户名不存在'考生名字->成绩序列'内
  4. for each_name in information:
  5.     if name in each_name:        # 成员操作运算符
  6.         print('您查找的%s同学的成绩为%d分。'%(each_name[0],each_name[1]))
  7.         I_find = True                   #将其状态设置为存在并退出循环
  8.         break                           
  9. if I_find == False:
  10.     print('您查找的%s同学不存在该数据库内!!!'%name)
复制代码

请输入需要查找的考生姓名:小甲鱼
您查找的小甲鱼同学的成绩为100分。
请输入需要查找的考生姓名:小马甲
您查找的小马甲同学不存在该数据库内!!!

2)编写一段代码,弥补sum()函数中不同数据类型无法求和问题,实现在一个序列内,自动无视字符串元素并实现加和。
  1. def sum_data(itery):
  2.     sum_data = 0.0
  3.     for each in itery:
  4.         if type(each) == int or type(each)== float:      #只允许int和float类型加和
  5.             sum_data += each
  6.         else:
  7.             continue
  8.     return sum_data                                      #返回加和值
  9. list1 = [1,3,7.1,'a']
  10. tuple1 = (-3.2,2,5,'小甲鱼')
  11. sum_1 = sum_data(list1)
  12. print('列表list1的和为%.3f'%sum_1)
  13. sum_2 = sum_data(tuple1)
  14. print('元组tuple1的和为%.3f'%sum_2)
复制代码

列表list1的和为11.100
元组tuple1的和为3.800
3)编写一段代码实现min()函数功能
  1. def min(itery):
  2.     least = itery[0]
  3.     for each in itery:
  4.         if each <= least:
  5.             least = each
  6.     return least
  7. list1 = [1,3,7,9,-3,-2]
  8. least = min(list1)
  9. print('列表list1中最小的元素值为%d。'%least)
复制代码

列表list1中最小的元素值为-3。









本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-9-4 22:55:41 | 显示全部楼层
sorted() 和 reversed() 功能有点相似啊??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-6 10:02:31 | 显示全部楼层
整理的很棒,温故知新啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-6 14:33:30 | 显示全部楼层
John_farmer 发表于 2015-9-4 22:55
sorted() 和 reversed() 功能有点相似啊??

sorted是排序,reversed是倒置,差别还是蛮大的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-6 16:40:46 | 显示全部楼层
醉酒青牛 发表于 2015-9-6 14:33
sorted是排序,reversed是倒置,差别还是蛮大的

确实,我看错了,哈哈哈!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-6 18:06:07 | 显示全部楼层
太空军校生 发表于 2015-9-6 10:02
整理的很棒,温故知新啊。

感谢支持,希望大家能一起进步。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-24 08:55:37 | 显示全部楼层
加入了程序英文注释,比较赞~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-24 09:19:19 | 显示全部楼层
谢谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-31 13:50:29 | 显示全部楼层
跟前边的类似
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-3 14:36:52 | 显示全部楼层
温故而知新  又有许多新收获!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-21 14:07:34 | 显示全部楼层
thanks
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-24 18:44:02 | 显示全部楼层
字符串str 元组tuple 列表list
元组不可修改 列表可以修改
list()可以把对象强制变为列表[]
tuple()把对象变为元组()
str()把对象变为字符串""
len()计算对象长度
max() min() 最大值 最小值
sum()对象中所有数的和
sorted()对象从小到大排列,如从大到小加入reverse=True
reversed() 对象转置并返回。如123 变为321.
enumerate() 对象和索引值一起返回
zip() 将对个对象组合在一起。

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
醉酒青牛 + 1 + 1 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2015-12-2 11:10:02 | 显示全部楼层
相当棒,要是小牛能将自己写的相关程序加上去,就更加棒了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-2 11:20:25 | 显示全部楼层
xiao_xiao 发表于 2015-12-2 11:10
相当棒,要是小牛能将自己写的相关程序加上去,就更加棒了

现在写的程序代码都是为了展示某个函数功能写的,不值得加哈。一段能实现特定功能的代码才是好代码,才是可以单独存放的代码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-22 16:12:28 | 显示全部楼层
整理的很棒,给个赞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-19 08:38:12 | 显示全部楼层
支持一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-18 10:22:40 | 显示全部楼层
加了简单的举例,更加容易理解!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-18 10:39:51 | 显示全部楼层
高手!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-30 11:30:41 | 显示全部楼层
受益匪浅
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-12 14:29:58 | 显示全部楼层
阿牛哥怎么不坚持更新啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 23:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表