1.enumerate()函数
enumerate()能够将list中的元素和元素下标打包成一个(下标,元素值)这样的元组,类似于将数组的下标和元素值用zip()打包。这个函数能够让我们方便的在遍历list的时候同时保存list元素的值和下标。
li = ['aaa', 'bbb', 456, 7]
# 直接使用print(enumerate(li))无法直接查看其值,要先转换为list才可以
print(list(enumerate(li)))
for index, i in enumerate(li):
print(index, i)
'''
[(0, 'aaa'), (1, 'bbb'), (2, 456), (3, 7)]
0 aaa
1 bbb
2 456
3 7
'''
2.使用for i in list时,改变i的值无法改变list里元素的值。
li1 = [1, 2, 3, 4, 6]
for i in li1:
i += 9
print(i, end=' ')
print('\n' + str(li1))
# 10 11 12 13 15
# [1, 2, 3, 4, 6]
从上述例子可以看出,i改变了,而li1中的元素并未改变。对于字符串同样如此。
使用上述的enumerate()函数能够很容易解释这一点。
li = ['aaa', 'bbb', 'ccc']
li1 = [1, 2, 3, 4, 6]
for index, i in enumerate(li1[:1]):
print(id(i))
print(id(li[index]))
# 1949511477552
# 1949513267888
可以看出,i的地址和列表中对应元素的地址是不同的,因此改变i并不能够改变list中元素的值。若想通过for遍历list改变其中的值,需要通过下标进行改变。