我正在尝试不使用反向功能编写自己的反向迭代器。我的问题是怎么做?此代码不起作用。def my_iter(iterable): temp = [] for i in range(len(iterable) - 1, -1, -1): #print(i) j = 0 temp[i] = iterable[i] j += 1 return temp例如:my_list = [78, 120, 3] my_iter(my_list) 输出:3, 120, 78
2 回答
哈士奇WWW
TA贡献1799条经验 获得超6个赞
您还可以使用双指针方法来反转列表。
def my_iter(iterable):
i = 0
j = len(iterable)-1
while i <= j:
temp = iterable[i]
iterable[i] = iterable[j]
iterable[j] = temp
i+=1
j-=1
return iterable
print(my_iter([78, 120, 3]))
#[3, 120, 78]
四季花海
TA贡献1811条经验 获得超5个赞
当您可以直接迭代时,不需要自定义反向迭代器iterable[::-1]。使用yieldin loop,你可以收获 generator 的优势:
def my_iter(iterable):
for x in iterable[::-1]:
yield x
my_list = [78, 120, 3]
rev_iter = my_iter(my_list)
print(next(rev_iter)) # 3
print(next(rev_iter)) # 120
print(next(rev_iter)) # 78
# calling next() again throws a StopIteration.
添加回答
举报
0/150
提交
取消