【零基础】Python3学习课后练习题(十)

版权声明:未经授权请勿转载,否则需承担相应法律责任。 https://blog.csdn.net/RonyLance/article/details/82935361

本文是跟着鱼C论坛小甲鱼零基础学习Python3的视频学习的,课后题也是跟随每一课所附属的题目来做的,根据自己的理解和标准答案记录的笔记。

第十一课

测试题:

0.如果不上机操作,你觉得会打印什么内容?

old = [1, 2, 3, 4, 5] 

new = old

old = [6]

print(new)

答:会打印出 [1, 2, 3, 4, 5] 。

>>> old = [1, 2, 3, 4, 5]
>>> new = old
>>> old = [6]
>>> print(new)
[1, 2, 3, 4, 5]
>>> 

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

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

答: list1[1][2] = [‘小鱿鱼’] 或者list[1][2][0] = '小鱿鱼' 。

#方法一
>>> list1 = [1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]
>>> list1[1][2] = ['小鱿鱼']
>>> list1
[1, [1, 2, ['小鱿鱼']], 3, 5, 8, 13, 18]

#方法二
>>> list1 = [1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]
>>> list1[1][2][0] = '小鱿鱼'
>>> list1
[1, [1, 2, ['小鱿鱼']], 3, 5, 8, 13, 18]


2. 要对一个列表进行顺序排序,请问使用什么方法?

答:使用 .sort() 方法。

>>> mylist = [86, 546, 6, 92, -45, 13, -7]
>>> mylist.sort()
>>> mylist
[-45, -7, 6, 13, 86, 92, 546]


3. 要对一个列表进行逆序排序,请问使用什么方法?

答:倒序可以用 .reverse() 方法或者前者使用倒序参数即 .sort(reverse=True),需要注意的是 .reverse() 方法是将列表以当前元素顺序反转排序,而 .sort(reverse=True) 的方法则是将当前列表以大到小的顺序正序排序之后再倒序排列。(两者在杂乱列表的情况下实际代码执行出来的结果是不同的)

# .reverse() 方法
>>> mylist = [86, 546, 6, 92, -45, 13, -7]
>>> mylist.reverse()
>>> mylist
[-7, 13, -45, 92, 6, 546, 86]

# .sort(reverse=True) 方法
>>> mylist = [86, 546, 6, 92, -45, 13, -7]
>>> mylist.sort(reverse=True)
>>> mylist
[546, 92, 86, 13, 6, -7, -45]


4. 列表还有两个内置方法没给大家介绍,不过聪明的你应该可以自己摸索使用的门道吧:

copy() :复制一个列表的整体。(也可用 list[:]切片复制法,功能相同)

clear() :清空一个列表内的所有元素使其变成空列表。

#关于列表的复制
>>> mylist = [546, 92, 86, 13, 6, -7, -45]
>>> newlist = mylist.copy()
>>> newlist
[546, 92, 86, 13, 6, -7, -45]
>>> toplist = mylist[:]
>>> toplist
[546, 92, 86, 13, 6, -7, -45]

#关于列表的清空
>>> oldlist = mylist.clear()
>>> oldlist
>>> print(oldlist)
None
>>> 


5. 你有听说过列表推导式或列表解析吗?
没听过?!没关系,我们现场来学习一下吧,看表达式:

>>> [ i*i for i in range(10) ]

觉得会打印什么内容?

答:会打印出 0-9 的本体乘积(平方)。

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

 

动动手:


列表推导式(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)

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

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

答:

>>> list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]
>>> list1
[(0, 1), (0, 3), (0, 5), (0, 7), (0, 9), (2, 1), (2, 3), (2, 5), (2, 7), (2, 9), (4, 1), (4, 3), (4, 5), (4, 7), (4, 9), (6, 1), (6, 3), (6, 5), (6, 7), (6, 9), (8, 1), (8, 3), (8, 5), (8, 7), (8, 9)]

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

				
>>> list1
[(0, 1), (0, 3), (0, 5), (0, 7), (0, 9), (2, 1), (2, 3), (2, 5), (2, 7), (2, 9), (4, 1), (4, 3), (4, 5), (4, 7), (4, 9), (6, 1), (6, 3), (6, 5), (6, 7), (6, 9), (8, 1), (8, 3), (8, 5), (8, 7), (8, 9)]
>>> 

1.活学活用:请使用列表推导式补充被小甲鱼不小心涂掉的部分。

答:

>>> list1 = ['1.Jost do It', '2.一切皆有可能', '3.让编程改变世界', '4.Impossible is Nothing']
>>> list2 = ['4.阿迪达斯', '2.李宁', '3.鱼c工作室', '1.耐克']
>>> list3 = [name + ':' + slogan[2:] for name in list2 for slogan in list1 if name[0] == slogan[0]]
>>> list3
['4.阿迪达斯:Impossible is Nothing', '2.李宁:一切皆有可能', '3.鱼c工作室:让编程改变世界', '1.耐克:Jost do It']
>>> for each in list3:
	print(each)

	
4.阿迪达斯:Impossible is Nothing
2.李宁:一切皆有可能
3.鱼c工作室:让编程改变世界
1.耐克:Jost do It

猜你喜欢

转载自blog.csdn.net/RonyLance/article/details/82935361