我不知道列表输入应该如何分隔,所以我不打算在我的答案中包含它。事实上,我只是假设我们从用户那里收到了一个格式正确的列表,只需要调用该列表上的函数。在
您的函数需要3个参数,start,end,以及{}本身,因为这是切片任务的最低要求。在def slice(lst, start, end):
{cd4>循环中最简单的元素是循环。毕竟,你可以使用索引符号。在
首先必须创建一个空列表,其中只包含适当的元素。我们将这个列表称为output列表。在
^{pr2}$
然后,我们可以遍历start和{}之间的所有整数,因为列表索引是整数。在for i in range(start, end):
output.append(lst[i])
在函数的末尾,您需要返回output列表,这样您就得到了一个实际切片的list对象。在return output
综合起来:# some shebangs here
'''
Some docstring here
'''
# some imports here
# receive user input. You need a list and two integers.
# lst = input()
# start = input()
# end = input()
def slice(lst, start, end):
output = []
if not(0 <= start < len(lst)):
return output
elif not(start <= end < len(lst)):
return output
else:
for i in range(start, end+1):
output.append(lst[i])
return output
print(slice(lst, start, end))
为什么你原来的剧本不起作用?
代码的问题在最后一行。如果您这样做:for i in list1:
list2.append(list1[i])
return(list2)
首先,i是被迭代的元素,不是是元素的索引。第二,返回终止函数,因此终止循环。因此,脚本不仅会抛出一个IndexError,而且即使您幸运,它也会返回一个只有一个元素的列表。您可以这样修改它:for i in list1:
list2.append(i)
return list2
这是可行的,只是现在我们忽略了start和end参数。{13>为什么选择这个函数。如果你想用Pythonic的方法来枚举的话,可以使用Pythonic的方法。在for index, element in enumerate(list1):
if start <= index <= end:
list2.append(element)
return list2