第016讲:序列!序列! (课后测试题及答案 )

一、列表、元组和字符串的共同点

1.都可以通过索引得到每一个元素

2.默认索引值总是从0开始

3.可以通过分片的方法得到一个范围内的元素的集合

4.有共同的操作符(重复操作符、成员关系操作符、拼接操作符)

二、序列常见的BIF

1.list():把一个可迭代对象转化为一个列表

list本身作为一个方法,有2中形态:无参数、有参数

无参数,就是生成一个空的列表

>>> list()
[]
>>> 

有参数

>>> a = ‘I love Fishc.com‘
>>> a = list(a)
>>> a
[‘I‘, ‘ ‘, ‘l‘, ‘o‘, ‘v‘, ‘e‘, ‘ ‘, ‘F‘, ‘i‘, ‘s‘, ‘h‘, ‘c‘, ‘.‘, ‘c‘, ‘o‘, ‘m‘]
>>> b = (1,1,2,3,5,8,13,21,34)
>>> b = list(b) #元组转化为列表
>>> b
[1, 1, 2, 3, 5, 8, 13, 21, 34]
>>> 

2.tuple():把一个可迭代对象转化为元组

>>> b
[1, 1, 2, 3, 5, 8, 13, 21, 34]
>>> b = tuple(b)
>>> b
(1, 1, 2, 3, 5, 8, 13, 21, 34)
>>> 

3.str()

>>> b
(1, 1, 2, 3, 5, 8, 13, 21, 34)
>>> b = str(b)
>>> b
‘(1, 1, 2, 3, 5, 8, 13, 21, 34)‘
>>> 

4.len(sub):返回参数sub的长度

5.max():返回序列或者参数集合中的最大值

>>> max(‘a‘,‘o‘,‘v‘,‘e‘) #V的ASCII码是最大的
‘v‘
>>> numbers = [1,34,45,-98,0,98]
>>> max(numbers)
98
>>> 

6.min():返回序列或者参数集合中的最小值

>>> numbers = [1,34,45,-98,0,98]
>>> min(numbers)
-98
>>> chars = ‘1234567890‘  #数字字符串
>>> min(chars)            #字符串的0的ASCII最小,是30,这个点要注意
‘0‘
>>> 
>>> a = [1,3,4,6,9,7,‘a‘]
>>> max(a)
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    max(a)
TypeError: ‘>‘ not supported between instances of ‘str‘ and ‘int‘
>>> 

7.sum(iterable[,start = 0]):返回序列参数iterable 和可选参数start的总和.

>>> tuple1 = (1.2,4.5,6.7)
>>> sum(tuple1)
12.4
>>> sum(tuple1,10)
22.4
>>> chars
‘1234567890‘
>>> sum(chars)
Traceback (most recent call last):
  File "<pyshell#27>", line 1, in <module>
    sum(chars)
TypeError: unsupported operand type(s) for +: ‘int‘ and ‘str‘
>>> 
>>> sum(3,5,7)
Traceback (most recent call last):
  File "<pyshell#51>", line 1, in <module>
    sum(3,5,7)
TypeError: sum() takes 1 positional argument but 3 were given
>>> sum([3,4,5])
12
>>> 

注意:使用max()、min()、sum()方法,参数中的数据类型必须是一致的,否则会报错,不支持不同类型的比较、相加。

8.sorted():返回一个排序的列表(默认是从小到大排序)

sort()是列表的方法,使用时list.sort(),而sorted()是序列的内置函数

>>> num = [2,6,8,34,65,34,56,23,-98,45]
>>> sorted(num)
[-98, 2, 6, 8, 23, 34, 34, 45, 56, 65]
>>> 

9.reversed():返回一个序列的翻转

reverse()是列表的方法,使用时list.reverse(),而reversed()是序列的内置函数

>>> num
[2, 6, 8, 34, 65, 34, 56, 23, -98, 45]
>>> reversed(num)
<list_reverseiterator object at 0x02B52D48>
>>> list(reversed(num))
[45, -98, 23, 56, 34, 65, 34, 8, 6, 2]
>>>

10.enumrate():枚举,生产由每个元素的index值和item值组成的元组

>>> num
[2, 6, 8, 34, 65, 34, 56, 23, -98, 45]
>>> enumerate(num)
<enumerate object at 0x02B32188>
>>> list(enumerate(num))
[(0, 2), (1, 6), (2, 8), (3, 34), (4, 65), (5, 34), (6, 56), (7, 23), (8, -98), (9, 45)]
>>> 

11.zip():返回由各个参数的序列组成的元组

>>> a = [1,2,3,4,5,6,7,8]
>>> b =[9,8,7,6]     #列表b没有的,列表a直接省去
>>> list(zip(a,b))  #将a,b打包
[(1, 9), (2, 8), (3, 7), (4, 6)]
>>> 

课后习题:

测试题

0. 我们根据列表、元组和字符串的共同特点,把它们三统称为什么?

序列

1. 请问分别使用什么BIF,可以把一个可迭代对象转换为列表、元组和字符串?

list()、tuple()、str()

2. 你还能复述出“迭代”的概念吗?

所谓迭代,是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。

3. 你认为调用 max(‘I love FishC.com‘) 会返回什么值?为什么?

会返回:‘v‘,因为字符串在计算机中是以ASCII码的形式存储,参数中ASCII码值最大的是‘v‘对应的118。

>>> max(‘I love FishC.com‘)
‘v‘
>>> 

4. 哎呀呀,现在的小屁孩太调皮了,邻居家的孩子淘气,把小甲鱼刚写好的代码画了个图案,麻烦各位鱼油恢复下啊,另外这家伙画的是神马吗?怎么那么眼熟啊!??

动动手

name = input(‘请输入待查找的用户名:‘)
score = [[‘迷途‘, 85], [‘黑夜‘, 80], [‘小布丁‘, 65], [‘福禄娃娃‘, 95], [‘怡静‘, 90]]
IsFind = False

for each in score:
    if name in each:
        print(name + ‘的得分是:‘, each[1])
        IsFind = True
        break

if IsFind == False:
    print(‘查找的数据不存在!‘)

0. 猜想一下 min() 这个BIF的实现过程

def min(x):
    least = x[0]
    for each in x:
        if each < least:
            least = each

    return least

print(min(‘5679335‘))

1. 视频中我们说 sum() 这个BIF有个缺陷,就是如果参数里有字符串类型的话就会报错,请写出一个新的实现过程,自动“无视”参数里的字符串并返回正确的计算结果

#sum functions
def sum(x):
    results = 0
    for each in x:
        if (type(each)==int) or (type(each)==float):
            results += each
        else:
            continue
    return results
print(sum([2,3,4,‘r‘,‘6‘,7.8,9.8]))

2. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!

原文地址:https://www.cnblogs.com/ananmy/p/12093206.html

时间: 2024-10-09 01:06:08

第016讲:序列!序列! (课后测试题及答案 )的相关文章

第014讲:字符串:各种奇葩的内置方法( 课后测试题及答案 )

一.字符串的秘密 二.各种内置方法 三.课时14课后习题及答案 一.字符串的秘密 学习了列表和元组,我们知道了分片的概念,事实上也可以应用于字符串上: >>> str1 = "I love fishc" >>> str1[:6] 'I love' 在python中没有字符这个类型,在Python看来,所谓字符,就是长度为1的字符串.当要访问字符串的其中一个字符的时候,只需要索引列表或元组的方法来索引字符串即可: >>> str1[5

第018讲:函数 灵活即强大(课后测试题及答案 )

1.形参和实参 函数从调用的角度来说,分为形式参数和实际 参数.形参是指函数创建和定义过程中小括号里的参数:而实参指得是函数在被调用过程中传递进来的参数.如下所示 >>> def MyFirstFunction(name): '函数定义过程中的name是叫形参' #因为Ta只是一个形式,表示占据一个参数位置 print('传递进来的' + name + '叫做实参,因为Ta是具体的参数值!') >>> MyFirstFunction('小甲鱼') 传递进来的小甲鱼叫做实

第016讲:序列!序列

0.我们根据列表.元组和字符串的共同特点,把它们三统称为什么? me:a)都可以通过索引值得到每个元素:b)默认的索引值都是从零开始:c)都可以通过切片的方式得到一个范围内的元素集合:d)有很多共同的操作符(重复操作符,拼接操作符,成员关系操作符) 参考答案:序列,因为他们有以下共同点:     1)都可以通过索引得到每一个元素 2)默认索引值总是从0开始(当然灵活的Python还支持负数索引) 3)可以通过分片的方法得到一个范围内的元素的集合 4)有很多共同的操作符(重复操作符.拼接操作符.成

第015讲:字符串:格式化 (课后测试题及答案)

0.Python之.format()方法 format():格式化输出,是Python2.6新增的格式化字符串的方法,把传统的%替换为{}来实现格式化输出(%:格式化操作符),相对于老版的%格式方法,有很多的优点. 优点: 1.format()不需要理会数据类型的问题:在%方法中%s只能替代字符串类型. 2.单个参数可以多次输出,参数顺序可以不相同. 3.填充方式十分灵活,对齐方式十分强大. 4.官方推荐使用的方式 format()后面的内容,填入大括号{}中(其中{}花括号表示replacem

第023、024讲:递归:这帮小兔崽子、汉诺塔 | 课后测试题及答案

0. 使用递归编写一个十进制转换为二进制的函数(要求采用“取2取余”的方式,结果与调用bin()一样返回字符串形式). me: def gcd(x): if x <= 1: return str(x) else: return gcd(x//2) + str(x%2) print(gcd(12)) 参考答案: def Dec2Bin(dec): result = '' if dec: result = Dec2Bin(dec//2) return result + str(dec%2) else

第025讲:字典:当索引不好用时 | 课后测试题及答案

0.当你听到小伙伴们在谈论“映射”.“哈希”.“散列”或者“关系数组”的时候,事实上他们就是在讨论什么呢? me:字典 1.尝试一下将数据('F': 70, 'C': 67, 'h': 104, 'i': 105, 's': 115)创建为一个字典并访问键 'C' 对应的值? me: dict1={'F': 70, 'C': 67, 'h': 104, 'i': 105, 's': 115} print(dict1["C"]) 2. 用方括号(“[]”)括起来的数据我们叫列表,那么使用

web实验指导书和课后习题参考答案

实验指导书 :http://course.baidu.com/view/daf55bd026fff705cc170add.html 课后习题参考答案:http://wenku.baidu.com/link?url=LJ9YiTw0GISMKZDl0yik8IBFnEZvgrZBsLMyZ8leqWDnRSRKvZfhEf2r39TNPzVLLEmSy92uVCQIJFKdArozoOBL60yg0v9MR5xcbTPESAm

第003讲,插曲之变量和字符串|课后测验及答案

测试题: 0. 以下哪个变量的命名不正确?为什么? (A) MM_520 (B) _MM520_ (C) 520_MM (D) _520_MM C:变量不能以数字开头 1. 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗? >>>myteacher = '小甲鱼' >>>yourteacher = myteacher >>>yourteacher = '黑夜' >>>print(myteacher) 打印: 小甲鱼 2.在不上

51 nod 1522 上下序列——序列dp

题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1522 很好的思想.考虑从小到大一对一对填数,这样也能对它的大小限制做一些操作了. 因为从小到大,所以只能全填在左边.全填在右边.两边各填一个.记录左边填到了哪个位置,就可知右边填到了哪个位置.转移之前判断一下这样填是否合法即可. 新的不合法的状态只会和现在填的两个位置有关. 注意输入格式!!符号前后有空格!!! #include<iostream> #inclu