[英]Enumerate List of Lists and Sorting
我正在關注在線教程,無法理解代碼的作用。
在這里,questions_int是包含以下格式的數字的列表的列表:
[[7214,1596,2353,4125,3214], [1234,2345,3252,4235], ..... , [4234,5378,4234,5235]]
目的是按問題的長度對問題進行排序,以減少訓練序列2序列模型數據時的填充時間。 但是我不明白代碼是如何工作的以及如何幫助按長度排序。
max_line_length = 20
sorted_questions = []
sorted_answers = []
for length in range(1, max_line_length+1):
for i in enumerate(questions_int):
if len(i[1]) == length:
sorted_questions.append(questions_int[i[0]])
sorted_answers.append(answers_int[i[0]])
好的,讓我們逐行介紹。
for length in range(1, max_line_length+1):
從1迭代到max_line_length。 這意味着length
將首先等於1
,然后在循環結束時length
將等於2
,依此類推,直到length is finally equal to
max_line_length`(在這種情況下為20)
for i in enumerate(questions_int):
使i等於(index,element)的元組,這意味着len(i[1])
將是第i個問題的長度。 隨着length
值從一開始增加,最短的問題和答案將逐漸添加到列表中,因此append(
在第二個for循環中調用
這行sorted_questions.append(questions_int[i[0]])
會將問題附加在當前索引處,其中len(i[1])==length
。 請記住,我是2個元素的元組,第一個是當前問題的索引。 因此, questions_int[i[0]]
是長度為length
的問題。
類似地, answers_int[i[0]]
是對應於該問題的答案。 因此,只要我們使用if
條件找到一個稍長的問題,列表sorted_answers
的新答案就會加長1,而sorted_questions
也sorted_questions
無論您在哪里感到困惑,都請問一個后續問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.