2016-11-30 5 views
0

私はindecesの変数を使用して配列のスライスを取得しようとしていますが、動作しません。もし私が硬貨に数字をハードコードすれば、それはすべてうまくいく。なぜ???Pythonで:配列をスライスするインデックスとしての変数は動作しません

マイコード:

def play(startplay,stopplay): 


    Y = x[startplay:startplay+5] 
    # produces an empty list... 

    Y = x[1:5] 
    # produces the correct list 
+3

まず、 'startplay'が' 1'なら 'Y = x [1:6]' not、 '[1:5]'となります。 –

+4

Well xは定義されていません...エラーは何ですか?ただ、「働かない」とは言わないでください。それがどういう意味を知っていると思いますか? –

+0

また、 'x'、' startplay'、 'stopplay'が何であるかわからないので、使用しているサンプル値を投稿して問題を再現できるようにしてください。 –

答えて

1

startplayの値は何ですか? list(または負の値ですが、0に近いstartplay+5 >= 0)よりも長い場合は、スライスすると空のlistが得られます。

>>> test = [1, 2, 3] 
>>> test[-5:0] # Can't slice from negative to non-negative with implicit step of 1 
[] 
>>> test[-6:-1] 
[1, 2] 

コメントに記載されているとおり、あなたの例はとにかく一致しません。 x[startplay:startplay+5]は長さ5のスライスであり、x[1:5]は長さ4のスライスです。

0

ImこれにShadowRangerがあります。私は操作が動作するはずですが、私が下で作成した例で動作することを確認します。

def trial(x1, x2): 
    array = [1,2,2,3,4,5,6,6,3,2,2,1,1,23,3,4,5,2,3,2,] 
    new_array = array[int(x1):int(x2)] 
    new_array2 = array[x1:x2] 
    print(new_array2) 
    print(new_array) 
trial(1, 3) 
[2, 2] 
[2, 2] 

あなたのリストは、最初の操作が可能であることを確認してください...ハード例から構築し、documentationを参照。

+0

少なくとも私の問題を複製しようとしていただきありがとうございます。あなたは正しく、私は元の配列の範囲外の変数を渡していた。ダムの質問ですが、私はあなたの応答に感謝します。 – user6710871

+0

問題ありません。] –

+0

回答が有効であると思われる場合は、適切な投票と投票を行う必要があります。あなたがあなたの質問を「ダム」とみなした場合は、それを削除する必要があります。 –

関連する問題