Python150题day04
1.3列表与元组练习题
①列表基础考察
已知一个列表lst = [1,2,3,4,5]
1.求列表的长度
2.判断6 是否在列表中
3.lst + [6,7,8] 的结果是什么?
4.lst*2 的结果是什么
5.列表里元素的最大值是多少
6.列表里元素的最小值是多少
7.列表里所有元素的和是多少
8.在索引1的后面新增一个的元素109.在列表的未尾新增一个元素20
解答:
\1. len(lst)
\2. 6 in lst
\3. [1,2,3,4,5,6,7,8]
\4. [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
\5. max(lst)
\6. min(lst)
\7. sum(lst)
\8. lst.insert(1, 10)
\9. lst.append(20)
②修改列表
lst = [1, [4, 6],True]
请将列表里所有数字修改成原来的两倍
答案:
lst[0] = 2
lst[1][0] = 4
lst[1][1] = 12
你以为存在一个函数,其功能便是将列表里所有的数据都变成原来的两倍,这样才显得变成语言是一个非常神奇的东西,但是很遗憾的告诉你,那些神奇的东西都是程序员自己实现的。
想要修改列表里的数据,必须通过索引对其重新赋值,上面的方法很low,你也可以写一个区数来实现这个功能,我们假设要处理的列表里只int,float,bool,和list数据,不管嵌套基层list.这个函数都应该能正确处理,下面是一段示例代码
def double_list(lst):
for index,item in enumerate(lst):
if isinstance(item,bool): continue
if isinstance(item,(int,float)):
lst[index]*=2
if isinstance(item,list):
double_list(item)
if name == ‘main‘:
lst = [1,[4,6],True]
double_list(lst)
print(lst)
③元组概念考察
写出下面代码的执行结果和最终结果的类型
\1. (1,2)*2
\2. (1,)*2
\3. (1)*2
解答:
\1. (1, 2, 1, 2)
\2. (1, 1)
\3. 2
注意第2和第3个,当元组里只有一个数据时,必须有逗号,否则就变成了第三题的形式:1*2
当元组中只有一个数据时,如果不省略了逗号,那么小括号的作用就不再是表示元组,而是表示运算优先级
④合并列表
lst = [1,2,3]
lst2 = [4,5,6]
不使用+号运算符,将lst2合并到lst的末尾,并思考,这个过程中,是否产生了新的列表
解答:
lst.extend(lst2)
这个过程中不会产生新的列表,最直观的检验方式就是print(id(lst)),合并前后,lst的内存地址都没有发生变化,只是列表里的内容发生了变化