我在代码中不理解这一行(简单代码)

时间:2017-02-09 19:24:57

标签: python

所以我有这个代码(用于解压缩文件),这是我在朋友的帮助下创建的:

wordsFile = open('wordsFile.txt', 'r')
words = wordsFile.read()
words = words.split()

positionFile = open('positionFile.txt', 'r')
position = positionFile.read()
position = position.split()

position = [int(i) for i in position]

FinalSentence = []
for x in position:
        FinalSentence.append(words[x-1])   

print(' '.join(FinalSentence))

但是我不明白第FinalSentence.append(words[x-1])行如何将位置和单词解压缩回句子。如果有人能用最简单的方式解释因为我对此非常陌生,那就太棒了:)

3 个答案:

答案 0 :(得分:1)

很难确定,因为我们无法访问这些文件,但我认为position表示单词'position的1-index,但是单词是0-index数组,因为这就是数组在python中的工作方式。这就是为什么你看x-1而不是x。

所以,如果您的文字文件看起来像

sentence this a is

您的位置文件看起来像

2 4 3 1

然后您将依次添加 a 句子

答案 1 :(得分:0)

在没有看到文件的情况下,我只能假设它有类似下面的内容(显然是最简单的形式,因为我无法看到下面代码的真实场景)

position变量是一个整数数组。

它循环遍历整数数组并减去值1以获取单词的数组索引。

例如:

words = ['very', 'my', 'nice', 'sentence']
positions = [2, 1, 3, 4]

然后循环通过阵列阵列。

当它循环通过它所做的位置时。

FinalSentence.append(words[2 - 1])
FinalSentence.append(words[1 - 1])
FinalSentence.append(words[3 - 1])
FinalSentence.append(words[4 - 1])

最有可能是1,因为数组索引从0开始。

然后你会:

FinalSentence = ['my', 'very', 'nice', 'sentence'];

然后加入

'my very nice sentence'

答案 2 :(得分:0)

这两个数组在" positionFile"中包含每个以空格分隔的数字。

position = position.split()
position = [int(i) for i in position]

这三个从列表中取出每个值,并从" wordsFile"中添加相应的单词。到一个单词列表。 -1转换为基于0的索引,正如@purpleladydragons所说)

FinalSentence = []
for x in position:
        FinalSentence.append(words[x-1]) 

将单词连接成用空格分隔的字符串,然后将其打印到屏幕上。

print(' '.join(FinalSentence))