1

私はいくつかのPythonコードをRubyに移植しようとしています.Ruby機能をより多く使用するためにいくつかを削除/変更しても、同等のRuby機能を使用して、かなりうまくやっています. ただし、コアポイントでは、Python で配列からスライスを取得する必要があり、次のようにするとうまくいきます。

output=["Apple","Orange","Pear"]
team_slices=[(0,1),(1,2),(2,3)]
for start,end in team_slices:
    print output[start:end]

期待どおりに出力されます:

['Apple']
['Orange']
['Pear']

ルビーコードは次のとおりです。

output=["Apple","Orange","Pear"]
team_slices=[[0,1],[1,2],[2,3]]
team_slices.each do |start,ending|
    print output[start..ending]
end

出力します:

["Apple","Orange"]
["Orange","Pear"]
["Pear"]

Python と同等のスライスを行う方法はありますか? ここで単純なものが欠けている可能性が高いことはわかっています

4

1 に答える 1

6

Pythonの範囲は終了値を除外しているように見えるので...、rubyでバリアントを使用するだけです。

output=["Apple","Orange","Pear"]
team_slices=[[0,1],[1,2],[2,3]]
team_slices.each do |start, last|
  print output[start...last]
end

PS:慣例を守りたい場合は、ルビーではインデントに2つのスペースを使用する必要があります;)

編集| 構文上のキーワードとして使用しているrubyのため、名前endを変更する必要がありました。last

于 2012-06-14T16:10:19.290 に答える