2016-11-09 3 views
-2

本当にありがとうございます。コード作品コードを理解するのに助けが必要です

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() 

ブレイクアップサブストリングの配列に文字列と

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

を探し変数s

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

次の行にその配列を割り当て各配列値のそれぞれの出現を検出し、その位置を配列位置に記録する

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

EDIT

私はいくつかの重要なポイントについて詳しく説明することを許可します。まず、分割関数。多くの言語には分割機能があります。それらはすべて区切り文字を取ります。区切り文字は、文字列が分割される文字です。 Pythonでは、区切り文字なしでsplit()関数を呼び出すことができます。この場合、関数は単一のスペース文字( "")を使用します。したがって、sentence.split()を呼び出すと、文の変数の値をとり、それを単一の空白を使って分割し、さまざまな部分文字列または部分の配列を返します。この場合、個々の単語。

次は、これは配列s内の各項目を取り、変数xにそれを置き、基本的なループである

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

のは、一瞬次のことを考えてみましょうラインで

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

を見てみましょう。このループを通過する最初のパスは "I"を受け取り、それをxに代入します。次に、sの配列内の "I"の位置を探します。 sには単語odの文が順番に含まれているため、最初の位置の配列項目0には値 "I"が含まれています。したがって、変数iの値は0になります。ループは配列s内の各項目の一致を継続し、配列内の値の対応する位置を見つけます。

これをさらに進めると、別の配列(この場合はposition)をインスタンス化します。ループが各値の対応するインデックスを見つける配列を反復するとき、それらの位置は新しい配列位置に置かれます。

今ほとんどの人はゼロベースのリストの点で考える必要はありません。したがって、追加のステップを踏んで各位置に1を加えます。したがって、位置0は位置1になります。

上記の例で使用したforループとこの質問の例で使用されている1行のコードの違いは何ですか?本当に何もない。この行

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

は単にforループの凝縮された形式です。 Pythonでは、これはList Comprehensionと呼ばれています。

この時点で、この回答はPythonの小さな教訓になりつつあります。 Pythons documentation siteのものから始めて、Pythonに関するチュートリアルを探して見つけることを提案する必要があります。もう1人がTutorialPointまたはLearn Pythonにいる可能性があります。 PluralsiteとCouseraにも大きなリソースがあります。

幸運

+0

詳細に進むことができますか、面倒であると申し訳ありません。 – zebu

+0

君は?まったく手間がかかりません。 –

+0

サブストリングと各配列値の出現を説明してください。ありがとう – zebu

関連する問題