2016-11-09 27 views
-2

我真的很感激如果有人能帮助我理解它,谢谢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

这只是列表中每个单词的第一次出现的位置('s.index(x)+ 1') – AChampion

回答

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) 

这是一个基本的循环,需要在数组S并将其放置在变量x的每个项目下面。通过这个循环的第一次通过需要“我”并将其分配给x。然后我们在s的数组中查找“I”的位置。由于s按顺序包含了句子od,所以第一个位置数组项0包含值“I”。因此,变量i的值变为0.循环继续匹配数组s中的每个项目,并在数组内找到值的相应位置。

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

现在大多数人不一定会想到以零为基础的名单。因此,我们采取额外步骤,并在发现每个位置时加1。所以位置0变成位置1,以此类推。

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

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

只是for循环的简化形式。在Python中,这被称为列表理解。

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

祝你好运

+0

是否有可能进一步详细说明,抱歉是一件麻烦 – zebu

+0

什么部分不清楚您?没有麻烦。 –

+0

你能解释一下子字符串和每个数组值的出现吗?谢谢 – zebu