我对Beautifulsoup ResultSets上的迭代行为感到有些困惑。一般来说,在python中我希望迭代生成每个元素的副本。无法通过为迭代元素分配新值来修改列表。
l1 = [1,2,3]
for elem in l1:
elem = elem + 10
不会修改原始列表l1
但如果我这样做:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'html.parser')
for elem in soup('body'):
elem.unwrap()
然后修改原汤元素!
这似乎与我不一致,但很明显我在这里缺少一些基本的东西
我正在使用python 3.5和BS 4.4.1
提前致谢
答案 0 :(得分:1)
好的,这是一个初学者的错误。当迭代汤元素时,我们迭代可变元素,因此复制组件的修改仍然反映在原始变量上
l1 = [[1,1],[2,2]]
for elem in l1:
elem[1] = 5555
将提供
l1 = [[1,5555],[2,5555]]
bs标记上的迭代行为相同