iter()函数
python
中迭代对象的生成。
示例:(条件求和)bonuses=[4, 2, 4, 5],n=3 输出: calcBonuses(bonuses, n) = 10 bonuses=[4, 2, 4, 5],n=5 输出: calcBonuses(bonuses, n) = 0 Code: def calcBonuses(bonuses, n): it = iter(bonuses) res = 0 try: for _ in range(n): res += next(it) except StopIteration: res = 0 return res
yield生成器
生成费波纳齐数列[0 1 1 2 3 5 …]
Coding:def fibonacciGenerator(n): def fib(): last = (0, 1) while True: yield last[0] last = last[0] + last[1], last[0] gen = fib() return [next(gen) for _ in range(n)]
参考1
raise 函数的使用
示例:
输入:team = ["Athos", "Porthos", "Aramis"] 函数的输出为: greetingsGenerator(team) = ["Hello, Athos!", "Hello, Porthos!", "Hello, Aramis!"]
Codes:
class Greeter(object): def __init__(self, names): self.cnt = 0 self.names = names def __iter__(self): return self def next(self): if self.cnt < len(self.names): self.cnt += 1 return 'Hello, {}!'.format(self.names[self.cnt - 1]) else: raise StopIteration def greetingsGenerator(team): return list(Greeter(team))
raise触发异常
一个列表中每第n个数判断一下是否能被d整除,若能整除,返回这个数在列表中基于1开始的下标:
示例:Input: purchases = [12, 43, 13, 465, 1, 13], n = 2 and d = 3 Output: superPrize(purchases, n, d) = [4]
示例代码:
class Prizes(object): def __init__(self, purchases, n, d): self.purchases = purchases self.n = n self.d = d self.index = n - 1 def __iter__(self): 'Returns itself as an iterator object' return self def next(self): while self.index < len(self.purchases): temp = self.index self.index += self.n if self.purchases[self.index - self.n] % self.d == 0: return temp+1 else: raise StopIteration def superPrize(purchases, n, d): return list(Prizes(purchases, n, d))
参考2.
eval函数
给一个函数列表和一个值,返回用此值执行函数列表中的函数后结果的列表。
示例:Input: x = 1 functions = ["math.sin", "math.cos", "lambda x: x * 2", "lambda x: x ** 2"] Output: tryFunctions(x, functions) = [0.84147, 0.5403, 2, 1]
代码:
def tryFunctions(x, functions): return map(lambda f:eval(f)(x),functions)
eval() 函数用来执行一个字符串表达式,并返回表达式的值,主要是
eval
函数的使用3.
PEP Style
- Refer:
1 http://www.jb51.net/article/71298.htm