为什么迭代bs4.element.ResultSet不会复制原始文件?

时间:2016-05-24 08:58:49

标签: python-3.x beautifulsoup iteration

我对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

提前致谢

1 个答案:

答案 0 :(得分:1)

好的,这是一个初学者的错误。当迭代汤元素时,我们迭代可变元素,因此复制组件的修改仍然反映在原始变量上

l1 = [[1,1],[2,2]]
for elem in l1:
    elem[1] = 5555

将提供

l1 = [[1,5555],[2,5555]]

bs标记上的迭代行为相同