|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在做16课课后题时开始用如下代码
- num = input('请输入需要计算的数字,用’,‘隔开:')
- num_list = num.split(',')
- new_list = []
- for each in num_list:
- if each.isdecimal():
- new_list.append(int(each))
- else:
- num_list.remove(each)
-
- result = sum(new_list)
- print('和为:%d' % result)
复制代码
之后发现不行就改成下面这样
- num = input('请输入需要计算的数字,用’,‘隔开:')
- num_list = num.split(',')
- new_list = []
- for each in num_list[:]:
- if each.isdecimal():
- new_list.append(int(each))
- else:
- num_list.remove(each)
-
- result = sum(new_list)
- print('和为:%d' % result)
复制代码
输入:12,54,dsf,432,sd3,54,fs,34
但是两段代码运行之后,为什么num_list的值相同,而new_list却不一样呢,list.remove是通过什么方式删除掉列表里的元素的,为什么加不加[:]只影响new_list而没有影响num_list.
1.因为程序里面使用remove() 方法的是 num_list ,而不是 num_list[:],
所以两个程序里 num_list 都改变了而且元素相等。
2.new_list不一样是因为第一个程序是对num_list进行循环,而num_list是在改变的;
而第二个程序是对num_list[:]进行循环,而num_list[:]并未改变。
|
|