2016-03-30 28 views
-1

私は最初に[:]を理解しようとしましたが、どのドキュメントにも言及していません。 Pythonの高度な文法を習得するのに最適な場所はどこですか? Google検索では[:]が見つかりません。しかし、私は最後にそれを理解しました。私はちょうどPythonのトリックを学ぶのに最適な場所であるのだろうかと思います。例えばx [:] = yの意味は何ですか?

def test(x, y): 
    x[:] = y 
    #x = y 

>>> a = [0.5,0.6] 
>>> b = [0.3] 
>>> test(a, b) 
>>> 
>>> print a 
[0.3] # [0.5,0.6] 
+0

あなたは2つの質問をしています:1)「x [:] = yの意味は? 2)「Python用の高度な文法を学ぶのに最適な場所はどこですか?」どの質問に実際に答えが欲しいですか? –

+0

@ xi_よく、そのdupeターゲットにはリストの内容を置き換える手段として 'x [:] = y'がありません。 –

+0

私は実際に第二の質問をしています。 @ rob – Jerry

答えて

1

検索する必要がある用語は、スライスです。 x[start:end:step]は完全な形式です。デフォルト値を使用するには、いずれかを省略することができます。のデフォルトは0です。endのデフォルトはリストの長さです。stepのデフォルトは1です。したがって、と同じ意味です。詳細については、 Expression section of the language referenceおよびsection four of the python tutorial might also be helpfulでご確認ください。

+0

[スタックオーバーフロー](http://stackoverflow.com/questions/509211/explain-pythons-slice-notation)そのものはもちろんです。 –

7

x[:]全体配列を意味します。基本的にはx[from:to]です。

fromを省略すると、最初からtoまでを意味します。

>>> numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> numbers[:5] 
[0, 1, 2, 3, 4] 

端までfromから、to手段を省略します。

>>> numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> numbers[5:] 
[5, 6, 7, 8, 9] 

両方を省略すると、リスト全体が意味されます。

>>> numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> numbers[:] 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

numbers[:]を設定すると、リスト全体を設定することを意味します

>>> numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> numbers[:] = [1, 2, 3, 4] 
>>> numbers 
[1, 2, 3, 4] 

はそのリストを変更し、新しいものを作成しませんnumbers[:]の設定に注意してください。オブジェクトはまだ同じid()を持ちます。

0

表記x[:]は、x[0:n]と等価です。ここで、nは、len(x)です。 xの要素の範囲を0からn-1まで指定します。

読み込み時に、指定された範囲の要素を含む、新しいリスト、文字列、または何かが作成されます。

に割り当てられている場合、指定された範囲の要素は元の要素で破壊的に置き換えられます。これはリストには許可されていますが、文字列には許可されません。

関連する問題