[英]Python - Writing slice function
我正在尝试编写一个将在两个给定值之间切片列表的函数。 如果停止值超出列表范围,则停止值是列表的长度。 如果起始值超出列表范围,则我想返回一个空列表。 如果起始值小于终止值,我想返回一个空列表。 我不想使用range()
和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()
,但是我还没有想到可以用于此功能的方法。
任何协助,将不胜感激。
您只需要使用切片符号。 在此线程中对此进行了介绍:
这是打印正确输出的解决方案:
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))
我无法重现您的问题,您应该发布完整的代码。 也许缺少回报并修正了变量? 我不知道。 但是这是我的解决方案:
def get_slice(my_list, start, stop):
return my_list[start:stop]
def to_string(my_list):
return "List is: " + ', '.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))
输出:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.