以下代码使用生成器在字符串中创建'.'
的索引列表。
def gen(s):
dot_index = 0
while dot_index >= 0:
dot_index = s.find('.', dot_index + 1)
yield dot_index
def get_dots():
s = '23.00 98.00 99.00'
l = [s.find('.', i + 1) for i in gen(s)]
print(l)
get_dots()
我希望列表的顺序是[2,8,14,-1],但实际的顺序是[8,14,-1,2]。
请解释为什么第一个索引2是列表中的最后一个。
这可能是由于我对发电机的了解不足。
由于
答案 0 :(得分:1)
生成器返回您期望的顺序,问题是在120 pixels
中获得第一个点的索引,然后搜索下一个点get_dots()
:
[s.find('.', i + 1) for i in gen(s)]