0

指定された 2 つの値の間でリストをスライスする関数を作成しようとしています。停止値がリストの境界を超える場合、停止値はリストの長さになります。開始値がリストの境界を超える場合は、空のリストを返したいと思います。開始値が終了値より小さい場合は、空のリストを返したいです。range()and以外の組み込み関数やメソッドを使用したくないlist.append()

関数を呼び出しているコードは次のとおりです。

str_list = ['s', 'h', 'r', 'u', 'g', 'g', 'e', 'd']

print("\nget_slice Test")
my_slice = list_function.get_slice(str_list, 2, 100)
print(list_function.to_string(str_list))
print(list_function.to_string(my_slice))

my_slice = list_function.get_slice(str_list, 6, 1)
print(list_function.to_string(my_slice))

my_slice = list_function.get_slice(str_list, 2, 5)
print(list_function.to_string(str_list))
print(list_function.to_string(my_slice))

私が生成したい出力は次のとおりです。

get_slice Test
List is: s, h, r, u, g, g, e, d
List is: r, u, g, g, e, d
List is:
List is: s, h, r, u, g, g, e, d
List is: r, u, g

関数を次のように定義しています。

def get_slice(my_list, start, stop):

試してみましmy_list = my_list[start:stop]たが、「NoneType」オブジェクトは反復可能ではありませんというエラーが表示されます。for k in range(0, length(my_list)):を使うように言われたので、も使ってみたかったrange()のですが、まだこの機能に使える方法が思いつきません。

これに関するご支援をいただければ幸いです。

4

2 に答える 2

0

スライス表記を使用するだけです。それはこのスレッドでここでカバーされました:

Pythonのスライス表記について解説

正しい出力を出力するソリューションは次のとおりです。

def get_slice(my_list, start, stop):
        return my_list[start:stop][:]

def to_string(my_list):
        return 'List is: %s' % ''.join(my_list[:])

str_list = ['s', 'h', 'r', 'u', 'g', 'g', 'e', 'd']

print("\nget_slice Test")
my_slice = get_slice(str_list, 2, 100)
print(to_string(str_list))
print(to_string(my_slice))

my_slice = get_slice(str_list, 6, 1)
print(to_string(my_slice))

my_slice = get_slice(str_list, 2, 5)
print(to_string(str_list))
print(to_string(my_slice))
于 2013-11-05T14:37:17.777 に答える