1、列表练习
将列表中所有数字翻倍
list=[1,[2,4],True]
‘’’
细节解释:
1、Python程序中 bool类型必须首字母大写,即False,True,true和false是错误的;
2、最基础的实现元素改变的方法是:重新赋值;
解法一:
‘’’
list[0]=2
list[1][0]=4
list[1][1]=8
print(list)
解法二:定义一个函数解决(假设list中元素只有int、float、bool和list
def double_list(lst):
for index, item in enumerate(lst):
'''
enumerate() 枚举函数,返回遍历的每个元素及其下标位置,
另外注意:可迭代 就是可可索引,切片,一个数据可
迭代 简单可理解为不止一个元素
'''
if isinstance(item, bool):
continue
if isinstance(item, (int,float)):
lst[index] *= 2
'''
上述方法得到的是元素的两倍值,如:
list=[2,3]
list[1]*=2
print(list)
'''
#item=item*2 不知道这样写一个元素翻倍可不可以
'''
这样写不可以,虽然这样会将元素翻倍重新赋
值,但是翻倍改变后的新元素和list的关系并
没有定义,所以 新元素不会
返回值list中,如下:
1、
list=[1,2,3]
for index,item in enumerate(list):
item*=2
print(list),此时返回[1,2,3]
2、
for index,item in enumerate(list):
list[index]*=2
print(list) 此时返回 [2.4.6]
'''
#list(index)*=2 这样写是错误,基础
#错误,下标是[num]
if isinstance(item,list):
double_list(list)
#错误之处
#因为上述if条件判断遍历list得到的元素之
#一item为list,所以
# 此时直接将这个list类型的元素item
#传递给定义的函数,复
# 用必须写成double_list(item),要
#是写成double_list(list)
# 就报错,因为这样就把list当做
#参数传递给函数了
if __name__ == '__main__':
lst=[2,[3,4,5],False,9]
double_list(lst)
print(lst)
整个程序运行失败,原因就在函数传参错误
‘’’
解释:
#错误之处第三个if后
#因为上述if条件判断遍历list得到的元素之一item为list,所以
# 此时直接将这个list类型的元素item传递给定义的函数,复
# 用必须写成double_list(item),要是写成double_list(list)
# 就报错,因为这样就把list当做参数传递给函数了
‘’’