rank = [np.inf for i in range(0, len(values11))]
时间: 2024-02-02 10:05:26 浏览: 17
这行代码使用了 Python 中的列表推导式,它创建了一个名为 `rank` 的列表,其长度与另一个名为 `values11` 的列表相同。列表中的每个元素都是正无穷大 `np.inf`。这个列表推导式相当于以下的 for 循环代码:
```
rank = []
for i in range(0, len(values11)):
rank.append(np.inf)
```
这样做的目的可能是为了在接下来的代码中对 `rank` 列表进行更新操作,例如:将某些元素替换成更小的值。
相关问题
以下代码有错误修改:from bs4 import BeautifulSoup import requests import openpyxl def getHTMLText(url): try: r=requests.get(url) r.raise_for_status() r.encoding=r.apparent_encoding return r.text except: r="fail" return r def find2(soup): lsauthors=[] for tag in soup.find_all("td"): for img in tag.select("img[title]"): h=[] h=img["title"] lsauthors.append(h) def find3(soup): lsbfl=[] for tag in soup.find_all("td")[66:901]: #print(tag) bfl=[] bfl=tag.get_text() bfl=bfl.strip() lsbfl.append(bfl) return lsbfl if __name__ == "__main__": url= "https://www.kylc.com/stats/global/yearly/g_population_sex_ratio_at_birth/2020.html" text=getHTMLText(url) soup=BeautifulSoup(text,'html.parser') find2(soup) lsbfl=find3(soup) workbook=openpyxl.Workbook() worksheet = workbook.create_sheet('排名',index=0) project=['排名','国家/地区','所在洲','出生人口性别比'] rank=[] a=2 b=3 c=1 for i in range(1,201,1): rank.append(i) for i in range(len(project)): worksheet.cell(row=1, column=i + 1).value = project[i] for i in range(len(rank)): worksheet.cell(row=i + 2, column=1).value = rank[i] for i in range(200): worksheet.cell(row=i + 2, column=2).value = lsbfl[c] c=c+4 for i in range(200): worksheet.cell(row=i + 2, column=3).value = lsbfl[a] a=a+4 for i in range(200): worksheet.cell(row=i + 2, column=4).value = lsbfl[b] b=b+4 wb=workbook wb.save('D:\世界各国出生人口性别比.xlsx') import numpy as np import matplotlib.pyplot as plt import matplotlib labels = ['United States','China','Ukraine','Japan','Russia','Others'] values = np.array([11,69,9,23,20,68]) fig = plt.figure() sub = fig.add_subplot(111) sub.pie(values, labels=labels, explode=[0,0,0,0,0,0.05], autopct='(%.1f)%%', shadow = True, wedgeprops = dict( edgecolor='k', width=0.85)) sub.legend() fig.tight_layout() labels2=['0-100','100-200','>200'] people_means=[140,43,17] x=np.arange(len(labels2)) width=0.50 fig,ax=plt.subplots() rects=ax.bar(x,people_means,width,label='Number of matches') ax.set_ylabel('sum') ax.set_title('People compare') ax.set_xticks(x) ax.set_xticklabels(labels2) ax.legend() plt.show()
修改后的代码如下:
from bs4 import BeautifulSoup
import requests
import openpyxl
def getHTMLText(url):
try:
r=requests.get(url)
r.raise_for_status()
r.encoding=r.apparent_encoding
return r.text
except requests.exceptions.RequestException as e:
return "fail: {}".format(str(e))
def find2(soup):
lsauthors=[]
for tag in soup.find_all("td"):
for img in tag.select("img[title]"):
h=img["title"]
lsauthors.append(h)
return lsauthors
def find3(soup):
lsbfl=[]
for tag in soup.find_all("td")[66:901]:
# do something
pass
return lsbfl
def TextRank(): window = 3 win_dict = {} filter_word = Filter_word(text) length = len(filter_word) # 构建每个节点的窗口集合 for word in filter_word: index = filter_word.index(word) # 设置窗口左、右边界,控制边界范围 if word not in win_dict: left = index - window + 1 right = index + window if left < 0: left = 0 if right >= length: right = length words = set() for i in range(left, right): if i == index: continue words.add(filter_word[i]) win_dict[word] = words # 构建相连的边的关系矩阵 word_dict = list(set(filter_word)) lengths = len(set(filter_word)) matrix = pd.DataFrame(np.zeros([lengths, lengths])) for word in win_dict: for value in win_dict[word]: index1 = word_dict.index(word) index2 = word_dict.index(value) matrix.iloc[index1, index2] = 1 matrix.iloc[index2, index1] = 1 summ = 0 cols = matrix.shape[1] rows = matrix.shape[0] # 归一化矩阵 for j in range(cols): for i in range(rows): summ += matrix.iloc[i, j] matrix[j] /= summ # 根据公式计算textrank值 d = 9.85 iter_num = 700 word_textrank = {} textrank = np.ones([lengths, 1]) for i in range(iter_num): textrank = (1 - d) + d * np.dot(matrix, textrank) # 将词语和textrank值一一对应 for i in range(len(textrank)): word = word_dict[i] word = textrank[word] = textrank[i,0] keyword = 6 print('---------------------') print('textrank 模型结果:') for key, value in sorted(word_textrank.items(), key = operator.itemgetter(1),reverse = True)[:keyword]: print(key + '/', end='')
这段代码似乎是实现了一个基于TextRank算法的关键词提取模型。它的核心思想是利用词语之间的相互关系,通过构建关键词之间的图模型,计算每个关键词的重要性,最终选出一些关键词作为文本的关键词。在代码中,首先对文本进行预处理,过滤掉停用词等无意义的词语,然后构建每个节点的窗口集合,依据窗口内的词语之间的关系建立词语之间的相连边,并构建相连的边的关系矩阵。接着,对矩阵进行归一化处理,根据公式计算每个词语的TextRank值。最后,根据计算得到的TextRank值从高到低选出一些关键词作为文本的关键词。