如何将循环转换为列表理解
How to convert a loop into a list comprehension
如何使用列表理解来编写这个循环?
t = [i.find_all('li') for i in soup.select('div.col.col-7-12')]
Des = []
for i in t:
r = []
Des.append(r)
for j in i:
n = j.text
r.append(n)
t = [i.find_all('li') for i in soup.select('div.col.col-7-12')]
Des = []
for i in t:
r = []
Des.append(r)
for j in i:
n = j.text
r.append(n)
替换一个循环:
t = [i.find_all('li') for i in soup.select('div.col.col-7-12')]
Des = []
for i in t:
r = [j.text for j in i]
替换两个循环:
t = [i.find_all('li') for i in soup.select('div.col.col-7-12')]
Des = [[j.text for j in i] for i in t]
或者:
Des = [[j.text for j in i] for i in [i.find_all('li') for i in soup.select('div.col.col-7-12')]]
然而,仅仅因为你可以用长列表理解替换某些东西并不意味着你应该这样做,我认为在这种情况下,我写的两个 two-liner 仍然可以阅读(可以使用一些更清晰的变量名称), one-liner 绝对是矫枉过正而且超级难读。
如何使用列表理解来编写这个循环?
t = [i.find_all('li') for i in soup.select('div.col.col-7-12')]
Des = []
for i in t:
r = []
Des.append(r)
for j in i:
n = j.text
r.append(n)
t = [i.find_all('li') for i in soup.select('div.col.col-7-12')]
Des = []
for i in t:
r = []
Des.append(r)
for j in i:
n = j.text
r.append(n)
替换一个循环:
t = [i.find_all('li') for i in soup.select('div.col.col-7-12')]
Des = []
for i in t:
r = [j.text for j in i]
替换两个循环:
t = [i.find_all('li') for i in soup.select('div.col.col-7-12')]
Des = [[j.text for j in i] for i in t]
或者:
Des = [[j.text for j in i] for i in [i.find_all('li') for i in soup.select('div.col.col-7-12')]]
然而,仅仅因为你可以用长列表理解替换某些东西并不意味着你应该这样做,我认为在这种情况下,我写的两个 two-liner 仍然可以阅读(可以使用一些更清晰的变量名称), one-liner 绝对是矫枉过正而且超级难读。