next()
方法的時候返回容器中的下一個值,任何實現了__iter__
和__next__()
(python2中實現next()
)方法的對象都是迭代器,__iter__
返回迭代器自身,__next__
返回容器中的下一個值,若是容器中沒有更多元素了,則拋出StopIteration異常。__iter__
方法,該方法返回一個迭代器對象已知列表namelist = ['王源','賈玲','沈騰','歐陽娜娜','鄧超','陳赫','鹿晗','鄭凱','王祖藍','Angelababy','李晨'],刪除列表removelist = ['王源','賈玲','沈騰','歐陽娜娜','宋小寶'],要求將removelist列表中的每一個元素從namelist中移除(屬於removelist,但不屬於namelist的忽略便可)python
錯誤解答ide
#!/usr/bin/env python
namelist = ['王源','賈玲','沈騰','歐陽娜娜','鄧超','陳赫','鹿晗','鄭凱','王祖藍','Angelababy','李晨']
removelist = ['王源','賈玲','沈騰','歐陽娜娜','宋小寶']
for name in namelist:
if name in removelist:
namelist.remove(name)
print(namelist)
執行結果:測試
以上並非咱們想要的結果,編輯代碼,測試查看代碼執行過程:spa
#!/usr/bin/env python namelist = ['王源','賈玲','沈騰','歐陽娜娜','鄧超','陳赫','鹿晗','鄭凱','王祖藍','Angelababy','李晨'] removelist = ['王源','賈玲','沈騰','歐陽娜娜','宋小寶'] for name in namelist: print(name) if name in removelist: print(name) namelist.remove(name) print(namelist)
執行結果:code
從以上執行過程咱們看到,for序列循環只匹配到了’王源‘、’沈騰‘,這個是爲何呢。對象
其實上述結果是因爲序列namelist是可迭代對象,執行for循環是按列表順序依次匹配。題中列表第一個元素’王源‘第一次就匹配,而後執行代碼塊remove操做,從原列表namelist刪除元素’王源‘。blog
注:此時列表更新爲rem
['賈玲', '沈騰', '歐陽娜娜', '鄧超', '陳赫', '鹿晗', '鄭凱', '王祖藍', 'Angelababy', '李晨'] ,此時進入第二次for循環,執行__next__返回的是列表中的下一個值'沈騰',列表首個元素'賈玲'被忽略了。如此循環直到
容器中沒有更多元素,則Stop,不會再循環。it
正確解答:io
1 #!/usr/bin/env python 2 namelist = ['王源','賈玲','沈騰','歐陽娜娜','鄧超','陳赫','鹿晗','鄭凱','王祖藍','Angelababy','李晨'] 3 removelist = ['王源','賈玲','沈騰','歐陽娜娜','宋小寶'] 4 5 for name in removelist: 6 print(name) 7 if name in namelist: 8 namelist.remove(name) 9 print(namelist)
執行結果: