【Python】小甲鱼课后习题第10、11、12讲--列表

问答题


2. append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?

答:
append() 方法是将参数作为一个元素增加到列表的末尾。(即无论 append 的参数是什么类型,都将它作为一个元素添加到列表尾)
extend() 方法则是将参数作为一个列表去扩展列表的末尾。(而 extend 则是将参数原原本本的添加到列表尾,参数是什么,列表尾就加什么)

>>> name = ['F', 'i', 's', 'h']
>>> name.append('C')
>>> name
['F', 'i', 's', 'h', 'C']
>>> name.extend(['.', 'c'])
>>> name
['F', 'i', 's', 'h', 'C', '.', 'c']
>>> name.append(['o', 'm'])
>>> name
['F', 'i', 's', 'h', 'C', '.', 'c', ['o', 'm']]

1*. 请问 list1[0] 和 list1[0:1] 一样吗?

答:不一样,list1[0] 返回第0个元素的值,list1[0:1] 返回一个只含有第0个元素的列表。

2. 如果你每次想从列表的末尾取出一个元素,并将这个元素插入到列表的最前边,你会怎么做?

答:代码如下:

>>> list1.insert(0, list1.pop())

1*. 请问如何将下边这个列表的’小甲鱼’修改为’小鱿鱼’?

list1 = [1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]

答:代码如下:

list1 = [1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]
list1[1][2][0] = '小鱿鱼'

4*. 请简单介绍一下列表的两个内置方法:copy() 和 clear()。

答:copy() 方法跟使用切片拷贝是一样的:

>>> list2 = list1.copy()
>>> list2
[1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]

clear() 方法用于清空列表的元素,但要注意,清空完后列表仍然还在哦,只是变成一个空列表。

>>> list2.clear()
>>> list2
[]

5. 你有听说过列表推导式或列表解析吗?

列表推导式(List comprehensions)也叫列表解析,灵感取自函数式编程语言 Haskell。Ta 是一个非常有用和灵活的工具,可以用来动态的创建列表,语法如下:

[有关A的表达式 for A in B]

例如:

>>> list1 = [x**2 for x in range(10)]
>>> list1
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

相当于:

list1 = []
for x in range(10):
    list1.append(x**2)

问题:请先在 IDLE 中获得下边列表的结果,并按照上方例子把列表推导式还原出来。

>>> list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]

在这里插入图片描述
答:代码如下:

list1=[]

for x in range(10):
    if x%2==0:
        for y in range(10):
            if y%2!=0:
                list1.append((x,y))
print(list1)         

6*. 活学活用:请使用列表推导式补充被涂掉的部分。

在这里插入图片描述
答:代码如下:

>>> list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]

动动手


0. 将给定列表打印成下图的样式【请至少使用两种方法实现】

假设给定以下列表:
member = [‘小甲鱼’, 88, ‘黑夜’, 90, ‘迷途’, 85, ‘怡静’, 90, ‘秋舞斜阳’, 88]
在这里插入图片描述
答:方法一如下:

member=['小甲鱼',88,'黑夜',90,'迷途',85,'怡静',90,'秋舞斜阳',88]

for each in member:
    if type(each)==int:
        print(each)
    else:
        print(each,end=' ')

方法二如下(小甲鱼提供):

count = 0
length = len(member)
while count < length:
    print(member[count], member[count+1])   #利用 print()
    count += 2

方法三如下(小甲鱼提供):

for each in range(len(member)):
    if each%2 == 0:   #利用列表索引
        print(member[each], member[each+1])

1. 观察以下代码,找出存在的Bug并修正。

num1 = input("请输入第一个整数:")
num2 = input("请输入第二个整数:")

if num1 < num2:
    print("第一个数比第二个数小!")

if num1 > num2:
    print("第一个数比第二个数大!")

if num1 == num2:
    print("第一个数和第二个数一样大!")

答:这个程序的目的是比较两个数字的大小,但 input() 函数获取的是字符串类型,所以我们应该先将其转换为整数,再进行对比。

以下三种改法都是可以的:

第一种:

num1 = int(input("请输入第一个整数:"))
num2 = int(input("请输入第二个整数:"))

if num1 < num2:
    print("第一个数比第二个数小!")

if num1 > num2:
    print("第一个数比第二个数大!")

if num1 == num2:
    print("第一个数和第二个数一样大!")

第二种:

num1 = input("请输入第一个整数:")
num2 = input("请输入第二个整数:")

if int(num1) < int(num2):
    print("第一个数比第二个数小!")

if int(num1) > int(num2):
    print("第一个数比第二个数大!")

if int(num1) == int(num2):
    print("第一个数和第二个数一样大!")

第三种:

num1 = input("请输入第一个整数:")
num2 = input("请输入第二个整数:")

num1 = int(num1)
num2 = int(num2)

if num1 < num2:
    print("第一个数比第二个数小!")

if num1 > num2:
    print("第一个数比第二个数大!")

if num1 == num2:
    print("第一个数和第二个数一样大!")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早知晓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值