Python遍历数组中的'意外'
Python 遍历数组时出现的问题:
不能遍历的时候同时修改他
1 2 3 4 5 6 7 8 9 10 11 12 13 | #便利数组,找到并删除所有的偶数 numbers = [1,3,5,7,8,5,8,9,5,7,44,2,6,8,8] for num in numbers: if num % 2 == 0: numbers.remove(num) print numbers #输出 >>[1, 3, 5, 7, 5, 9, 5, 7, 2, 8] 本应该输出为 [1, 3, 5, 7, 5, 9, 5, 7] |
因为python的特殊机制,在遍历时改版数组是会出现各种莫名的问题
因此不能在for循环遍历时对数组进行操作,而需要用到另外一种办法
一.
1 2 3 4 5 6 7 8 9 10 | #建立一个新的数组,找出所有偶数,将这个偶数数组中的元素进行删除 def remove_even(numbers): remove = [] for num in numbers: if num % 2 == 0: remove.append(num) for i in remove: numbers.remove(i) return numbers #[1, 3, 5, 7, 5, 9, 5, 7] 正确结果 |
二.
1 2 3 4 5 6 7 8 | #建立奇数数组,将所有奇数存入其中并返回 def remove_even2(numbers): newlist = [] for num in numbers: if num % 2 == 1: newlist.append(num) return newlist #[1, 3, 5, 7, 5, 9, 5, 7] 正确结果 |