我需要帮助理解一部分代码

时间:2016-11-09 18:55:35

标签: python-2.7

我真的很感激如果有人能帮助我理解它,请感谢p.s.我是代码新手

sentence = "I like my dog I buy my dog toys"
s = sentence.split()
positions = [s.index(x)+1 for x in s]
print(sentence)
print(positions)

我真的很感激如果有人能帮助我理解它,请感谢p.s.我是代码新手

1 个答案:

答案 0 :(得分:2)

吉恩是对的。你有没有做过任何在线python教程? 开始。 第一行分配字符串"我喜欢我的狗我买我的狗玩具"到一个名为句子的变量。

下一行

s = sentence.split()

将字符串分解为子字符串数组,并将该数组赋值给变量s

>>> print(s)
['I', 'like', 'my', 'dog', 'I', 'buy', 'my', 'dog', 'toys']

下一行

positions = [s.index(x)+1 for x in s]

查找每个数组值的出现并将其位置记录到数组位置

>>> print(positions)
[1, 2, 3, 4, 1, 6, 3, 4, 9]

修改

请允许我详细说明一些要点。一,拆分功能。许多语言都具有拆分功能。它们都采用分隔符,字符串将被分割的字符。在Python中,split()函数可以在没有分隔符的情况下调用。在这种情况下,该函数将使用单个空格字符("")。因此,当我们调用sentence.split()时,它会获取句子变量的值并使用单个空格将其分开,并返回各种子串或片段的数组。在这种情况下,单个词。

接下来,让我们看一下

positions = [s.index(x)+1 for x in s]

让我们暂时考虑以下内容

for x in s
  i = s.index(x)

这是一个基本循环,它接收数组中的每个项目并将其放在变量x中。第一次通过这个循环需要"我"并将其分配给x。然后我们寻找"我"的位置。在s的数组中。由于s按顺序包含单词od,第一个位置,数组项0包含值" I"。因此,变量i的值变为0.循环继续匹配数组s中的每个项,并找到值在数组中的相应位置。

更进一步,我们实例化另一个数组,在这种情况下是位置。当循环遍历数组s找到每个值的相应索引时,那些位置将被放置在新的数组位置。

现在大多数人不一定会考虑基于零的列表。因此,我们采取额外步骤,并在找到每个位置时添加1。所以位置0变为位置1,依此类推。

那么我上面演示的for循环和这个问题的例子中使用的单行代码有什么不同呢?真的没什么。这一行

positions = [s.index(x)+1 for x in s]

只是for循环的浓缩形式。在Python中,这称为List Comprehension。

此时,这个答案在Python上变得越来越小。我真的需要建议你找一些关于Python的教程,从Pythons documentation site开始。另一个可能在TutorialPointLearn Python。 Pluralsite和Cousera也有很多资源。

祝你好运