鱼C论坛

 找回密码
 立即注册
查看: 1734|回复: 0

[技术交流] 《Python零基础》016、序列!序列!

[复制链接]
发表于 2017-8-1 16:19:41 | 显示全部楼层 |阅读模式

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

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

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。
>>>



评分

参与人数 1鱼币 +5 收起 理由
小甲鱼 + 5

查看全部评分

本帖被以下淘专辑推荐:

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 11:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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