3 4進行反向迭代以及實現反向迭代

2021-07-29 10:35:22 字數 1130 閱讀 7401

# -*- 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解題思路 總體上使用的是貪心策略,從最大面值的往下貪心選擇就可以了...