# -*- coding:utf-8 -*-
"""實際案例:
實現乙個連續浮點數發生器floatrange(和xrange類似),
根據給定範圍(start, end)和步進值(step)產生一系列連續浮點數,
如迭代floatrange(3.0, 4.0, 0.2)可產生序列
"""l = [1, 2, 3, 4, 5]
l.reverse() # 會改變原列表
# l = [5, 4, 3, 2, 1]
l1 = l[::-1] # 切片操作,返回新的列表,但是浪費資源
print(reversed(l)) # 會得到列表的反向迭代器
print(iter(l)) # 會得到列表的正向迭代器
for x in reversed(l):
print(x)
# reversed()方法實際呼叫的是l.__reversed__()方法
class
floatrange
(object):
def__init__
(self, start, end, step = 0.1):
self.start = start
self.end = end
self.step = step
def__iter__
(self):
t = self.start
while t <= self.end:
yield t
t += self.step
def__reversed__
(self):
t = self.end
while t >= self.start:
yield t
t -= self.step
print('-' * 50)
for x in floatrange(1.0, 4.0, 0.5): # 正向迭代
print(x)
print('-' * 50)
for x in reversed(floatrange(1.0, 4.0, 0.5)): # 反向迭代
print(x)
Python 反向迭代和實現反向迭代
案例 實現乙個連續的浮點數發生器,floatrange,根據給定範圍 start,end 和步進值,產生一些列的浮點數,例如 floatrange 3,4,0.2 將產生下列序列 正向 3.0 3.2 4.0 反向 4.0 3.8 3.0 如何實現?方法1 列表翻轉 usr bin python3 ...
反向迭代與實現
要求 實現乙個連續浮點數發生器floatrange,根據給定範圍和步進值產生一系列連續浮點數,如迭代floatrange 3.0,4.0,0.2 可產生序列 正向 3.0,3.2,3.4,3.6,3.8,4.0 反向 4.0,3.8,3.6,3.4,3.2,3.0 class floatrange ...
stl庫中的map (反向迭代器)以及例題
codeforces 1003d n個硬幣,q次詢問。第二行給你n個硬幣的面值 保證都是2的次冪!每次詢問組成b塊錢,最少需要多少個硬幣?example input 5 4 2 4 8 2 485 1410 output 1 13 2解題思路 總體上使用的是貪心策略,從最大面值的往下貪心選擇就可以了...