像print()这样的函数不返回值。但有时我需要对它们进行迭代。有没有什么方法可以用函数式编程方式进行编码,而不是使用“for”?func()不返回值时如何使用map(func,iterator)函数?
# changes some values of a list according to another pointer iterator.
thelist = [1]*100
slices = [(3,8),(9,15),(72,88)]
for items in slices:
for i in range(items[0],items[1]):
thelist[i] = 8
这里是例子,我想要的是改变“列表”中的值。如何使用理解或map()或其他方法进行重新编码,而不会损失代码的效率。
“但是,当移动到python3时,必须生成占用大量空间的新列表。”我不明白你的意思。在Python 3中,'map'返回一个懒惰的迭代器,在Python 2中,'map'返回完全物化的'list'。究竟是什么,你可以在Python 2中做什么,你不能在Python 3中创建一个新的列表? –
@ juanpa.arrivillaga对不起,我混乱的话。我重写了这个问题。现在对你有意义吗? – NuosiWu
答案是你*不应该使用像'print' *这样的副作用的函数结构,或者像你的例子那样使用列表变异。 –