Python遍历数组,修改
arr = ['a', 'b', 'c'] #想实现['<a>', '<b>', '<c>']
for i in arr: #错误方法
i = '<' + i + '>'
print(i) # i得到了想要的结果
print(arr) #arr没有发生改变。说明i是系统新创建的变量,并且copy了arr中元素的值,但是指针
#并没有指向数组中的元素
for i in range(0, len(arr)): #正确方法
arr[i] = '<' + arr[i] + '>'
当然,也可以使用map()方法:
def addBrackets(x) :
return '<' + x + '>'
newArr = map(addBrackets, arr)
print(list(newArr))
值得注意的是在Python3中map()方法返回的是iterator(迭代器)而不是list,所以需要用list()方法才能显示出来。返回iterator是因为map()函数处理的对象本身就可能是一个iterator,在Python2中,map()方法返回的是list,如果list太大就可能导致内存不足,而返回iterator就不存在这个问题,因为Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。reduce(), filter() 同理。
网友评论