为了账号安全,请及时绑定邮箱和手机立即绑定

写一个反向迭代器python

写一个反向迭代器python

撒科打诨 2022-01-05 10:46:37
我正在尝试不使用反向功能编写自己的反向迭代器。我的问题是怎么做?此代码不起作用。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]


查看完整回答
反对 回复 2022-01-05
?
四季花海

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.


查看完整回答
反对 回复 2022-01-05
  • 2 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信