gpt4 book ai didi

python - 使用嵌套 ifs 的替代方法

转载 作者:太空宇宙 更新时间:2023-11-04 02:59:04 26 4
gpt4 key购买 nike

for tag in tags:
Ulist1.append(tag.get('href', None))

if len(Ulist1) > 2:
print Ulist1[2]
html = urllib.urlopen(Ulist1[2]).read()
soup = BeautifulSoup(html)
tags = soup('a')
Ulist2 = list ()

for tag in tags:
Ulist2.append(tag.get('href', None))

if len(Ulist2) > 2:
print Ulist2[2]
html = urllib.urlopen(Ulist2[2]).read()
soup = BeautifulSoup(html)
tags = soup('a')
Ulist3 = list ()

for tag in tags:
Ulist3.append(tag.get('href', None))

if len(Ulist3) > 2:
print Ulist3[2]
html = urllib.urlopen(Ulist3[2]).read()
soup = BeautifulSoup(html)
tags = soup('a')
Ulist4 = list ()

for tag in tags:
Ulist4.append(tag.get('href', None))

这是用beautiful soup解析HTML,找到位置3(名字为1)的链接。按照该链接。重复此过程 4 次。有没有比使用嵌套循环更有效的方法?

最佳答案

您可以像 Peter Wood 所说的那样将其分解为一个函数。这是显示基本概念的一种可能的实现。

def print_third_recursive(tags, iterations):
Ulist = [tag.get('href', None) for tag in tags] # more pythonic
if len(Ulist) > 2 && iterations :
print Ulist[2]
html = urllib.urlopen(Ulist[2]).read()
soup = BeautifulSoup(html)
new_tags = soup('a')
use_third(new_tags, iterations - 1)

use_third_recursive(tags, 3)

如果您希望函数更简单,这绝对可以在不使用递归的情况下完成。

def print_third(tags):
Ulist = [tag.get('href', None) for tag in tags] # more pythonic
new_tags = []
if len(Ulist) > 2:
print Ulist[2]
html = urllib.urlopen(Ulist[2]).read()
soup = BeautifulSoup(html)
new_tags = soup('a')
return new_tags

print_third(
print_third(
print_third(tags)
)
)

如果其中一个标签列表中没有 3 个项目,则任何实现都不应该有任何问题,因为它们会立即从层中返回。

关于python - 使用嵌套 ifs 的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41539170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com