您的位置:首页 > 编程语言 > Python开发

Beginning Python: From Novice to Professional, Second Edition

2010-09-04 21:45 483 查看
中文版p83页:

girls = ['alice', 'bernice', 'clarice']
boys = ['chris', 'arnold', 'bob']
letterGirls = {}
for girl in girls:
letterGirls.setdefault(girl[0], []).append(girl)
print ([b+'+'+g for b in boys for g in letterGirls[b[0]]])

输出结果:

>>>
['chris+clarice', 'arnold+alice', 'bob+bernice']

原理:

>>> girls = ['alice', 'bernice', 'clarice']
>>> letterGirls = {}
>>> for girl in girls:
letterGirls.setdefault(girl[0], []).append(girl)

>>> print letterGirls
{'a': ['alice'], 'c': ['clarice'], 'b': ['bernice']}

letterGirls.setdefault(girl[0], [])

'a':[]

letterGirls.setdefault(girl[0], []).append(girl)

'a':['alice']

如此便是个很好的方法。

p91:

斐波那契数列:

def fibs(num):
result = [0, 1]
for i in range(num-2):
result.append(result[-2] + result[-1])
return result
num = input('How many Fibonacci numbers do you want? ')
print fibs(num)

阶乘:

递归版本

def factorial(n):

  if n == 1:

return 1

else:

return n * factorial(n-1)

非递归:

def factorial(n):

  result = n

  for i in range(1,n):

    result *= i

return result

power函数:

递归

def power(x, n):
if n == 0:
return 1
else:
return x * power(x, n-1)

非递归

def pow(x,n):

  result = 1

  for i in range(n):

    result *= x

  resturn result

二分查找:

def search(sequence, number, lower=0, upper=None):
if upper is None: upper = len(sequence)-1
if lower == upper:
assert number == sequence[upper]
return upper
else:
middle = (lower + upper) // 2
if number > sequence[middle]:
return search(sequence, number, middle+1, upper)
else:
return search(sequence, number, lower, middle)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐