一个关于python的函数式编程的问题
有两段python代码,运行应该说会一致的,但是没有达到一致的效果,不知道问题在哪,其中car1.py输出是对的.<p>car1.py:</p><p>from random import random</p><p>time = 5
car_positions = </p><p>while time:
# decrease time
time -= 1</p><p> print ('')
for i in range(len(car_positions)):
# move car
if random() > 0.3:
car_positions += 1</p><p>
# draw car
print ('-' * car_positions)</p>
用函数式的写法:
<p>car_function.py: (执行的输出不太对)
from random import random</p><p>def race(state):
draw(state)
if state['time']:
race(run_step_of_race(state))</p><p>def draw(state):
print ('')
print ('\n'.join(map(output_car,state['car_positions'])))</p><p>def output_car(car_positions):
return '-' * car_positions</p><p>def run_step_of_race(state):
return {'time':state['time']-1,'car_positions':move_cars(state['car_positions'])}</p><p>def move_cars(car_positions):
return map(lambda x : x+1 if random() > 0.3 else x,car_positions)</p><p> </p><p>race({'time':5,'car_positions':})</p>
python版本问题,更换一下版本 可以把输出打印以下 def move_cars(car_positions):
return map(lambda x : x+1 if random() > 0.3 else x,car_positions)
改为:
def move_cars(car_positions):
return list(map(lambda x : x+1 if random() > 0.3 else x,car_positions))
Python2中,map直接返回元素列表
Python3中,map函数返回一个map类型对象。
页:
[1]