簡體   English   中英

枚舉列表和排序列表

[英]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]])

好的,讓我們逐行介紹。

  1. 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)

  2. for i in enumerate(questions_int):使i等於(index,element)的元組,這意味着len(i[1])將是第i個問題的長度。 隨着length值從一開始增加,最短的問題和答案將逐漸添加到列表中,因此append(在第二個for循環中調用

  3. 這行sorted_questions.append(questions_int[i[0]])會將問題附加在當前索引處,其中len(i[1])==length 請記住,我是2個元素的元組,第一個是當前問題的索引。 因此, questions_int[i[0]]是長度為length的問題。

  4. 類似地, answers_int[i[0]]是對應於該問題的答案。 因此,只要我們使用if條件找到一個稍長的問題,列表sorted_answers的新答案就會加長1,而sorted_questionssorted_questions

無論您在哪里感到困惑,都請問一個后續問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM