python生成器函数
引例
实现一个函数,返回字符串里每个单词的首字母所对应的下标
方法一
用一个列表保存字符串里每个单词的首字母所对应的下标,然后返回这个列表即可
def index_words(text):
result = []
if text:
result.append(0)
for idx, letter in enumerate(text):
if letter == ' ':
result.append(idx + 1)
return result
address = 'Four score and seven years ago...'
re = index_words(address)
输出: [0, 5, 11, 15, 21, 27]
方法二
使用生成器函数
def index_word_iter(text):
if text:
yield 0
for idx, letter in enumerate(text):
if letter == ' ':
yield idx + 1
address = 'Four score and seven years ago...'
re = list(index_word_iter(address))
输出: [0, 5, 11, 15, 21, 27]
使用生成器函数的好处
需要用到的时候才产生数据,且每次只产生一个数据,消耗的内存少、效率高