在循环中应用`lambda`和`map`?

时间:2017-10-16 05:19:36

标签: python python-3.x

我的文件命名为:

import os
import glob
py_files = glob.glob('*.py')

我要将它们重命名为:

for file in py_files:
    os.rename(file, file.replace('-','_'))

or
des_py_file = [file.replace('-','_') for file in py_file ]
for i, j in zip(py_files, dst_py_files:
    os.rename(i,j)

然后重命名:

lambda

或者,我尝试使用mapmap(lambda i,j:os.rename(i,j),zip(py_files,dst_py_files)) or map(lambda i: os.rename(i, i.replace('-','_')),py_files)

进行函数式编程
<map object at 0x109b237f0>
<map object at 0x109b23d30>

Nothings发生在目录中的文件中,而输出:

lambda

如何使用 $(document).ready(function() { Highcharts.setOptions({ global: { useUTC: false } }); Highcharts.chart('container', { chart: { type: 'spline', animation: Highcharts.svg, // don't animate in old IE marginRight: 10, events: { load: function() { var series1 = this.addSeries({ name: "Random 1", data: [[(new Date()).getTime(), 5000]] }); var series2 = this.addSeries({ name: "Random 2", data: [[(new Date()).getTime(), 5000]] }); (function loop() { var rand = Math.round(Math.random() * 100) + 500; setTimeout(function() { var x = (new Date()).getTime(); var y1 = 5000 + Math.round(Math.random() * 100); var y2 = 5000 + Math.round(Math.random() * 100); //console.log(x + ', ' + y); series1.addPoint([x, y1], true, true); series2.addPoint([x, y2], true, true); loop(); }, rand); }()); } } }, title: { text: 'Live random data' }, xAxis: { type: 'datetime', tickPixelInterval: 150 }, yAxis: { title: { text: 'Value' }, plotLines: [{ value: 0, width: 1, color: '#808080' }] }, tooltip: { enabled: false }, legend: { enabled: false }, exporting: { enabled: false } }); });

1 个答案:

答案 0 :(得分:5)

  

如何使用https://en.wikipedia.org/w/api.php?action=query&prop=info|extracts|pageimages|images&inprop=url&exsentences=1&titles=india

别。 lambda滥用map(lambda i,j:os.rename(i,j),zip(py_files,dst_py_files))副作用,正如您所注意到的,在Python 3中不起作用,因为Python 3的map被懒惰地评估。

您可以使用map强制进行评估或等效,以制作像Python 2中一样无用的列表:

list

别。

您可以使用[*map(os.rename, py_files, dst_py_files)] 强制进行评估:

for

这样做的好处是,呃,

但是,如果您真的想要传递函数,那么您可以创建自己的产生副作用的明确目的:

for _ in map(os.rename, py_files, dst_py_files):
    pass