Python为列表提供切片功能,但为此 问题,你将实现自己的能够生产的功能 列表切片(注意:你不能在你的切片操作符中使用切片操作符) 解)。该函数应调用
slice
并执行以下操作 这个特定顺序的三个输入:
- 将创建切片的列表
source
。您的功能无法修改此列表。- 一个正整数
start
,表示您将创建的切片的起始索引。如果此值不在[0, len(list)-1]
范围内,则您的函数应返回一个空列表。- 一个正整数
醇>end
,表示您将创建的切片的结束索引。如果此值不在[start, len(list)-1]
范围内,则您的函数应返回一个空列表。如果 参数值是可以接受的,您的函数将返回一个列表 包含
source
中从索引start
开始到结尾的项目 在索引end
(包括)。这与Python切片不同 运算符,因为索引end
中的项目也包含在新项目中 列表。
这是我到目前为止所得到的:
list1 = []
def slice(list1):
list1 = list(input("enter a list"))
emptylist = []
st = int(input("enter start"))
ed = int(input("enter end"))
if ed not in range(st,len(list1)-1) or st not in range(0,len(list1)-1):
print(emptylist)
else:
list2 = []
for i in list1:
list2.append(list1[i])
return(list2)
print(slice(list1))
答案 0 :(得分:0)
我不知道列表输入应该如何分隔,所以我不打算将它包含在我的答案中。实际上,我只是假设我们已经以某种方式从用户那里收到了正确格式的列表,只需要在该列表上调用该函数。
您的函数将使用3个参数,start
,end
和list
本身,因为这些是切片任务的最低要求。
def slice(lst, start, end):
最简单的解决方案是迭代循环并添加start:end
范围内的所有元素。毕竟,您可以使用索引表示法。
首先,您必须创建一个仅包含相应元素的空列表。我们将此列表称为output
列表。
output = []
然后,我们可以迭代start
和end
之间的所有整数,因为列表索引是整数。
for i in range(start, end):
output.append(lst[i])
在函数结束时,您需要返回output
列表,以便最终获得实际切片的列表对象。
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
参数。 (这就是我选择range()
功能的原因)。如果你想使用Pythonic表示法,你可以通过列表枚举,检查索引,并在适当的时候附加。
for index, element in enumerate(list1):
if start <= index <= end:
list2.append(element)
return list2