Python:就地映射

发布于 2024-09-05 04:52:09 字数 95 浏览 8 评论 0原文

我想知道是否有办法在某些东西上运行地图。 Map 的工作方式是它接受一个可迭代对象,并将函数应用于该可迭代对象中的每个项目,生成一个列表。有没有办法让map修改可迭代对象本身?

I was wondering if there is a way to run map on something. The way map works is it takes an iterable and applies a function to each item in that iterable producing a list. Is there a way to have map modify the iterable object itself?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

笙痞 2024-09-12 04:52:09

如果您需要就地修改列表,则切片分配通常是可以的

mylist[:] = map(func, mylist)

A slice assignment is often ok if you need to modify a list in place

mylist[:] = map(func, mylist)
扮仙女 2024-09-12 04:52:09

写起来很简单:

def inmap(f, x):
    for i, v in enumerate(x):
            x[i] = f(v)

a = range(10)
inmap(lambda x: x**2, a)
print a

It's simple enough to write:

def inmap(f, x):
    for i, v in enumerate(x):
            x[i] = f(v)

a = range(10)
inmap(lambda x: x**2, a)
print a
香草可樂 2024-09-12 04:52:09

只需编写明显的代码即可完成此操作。

for i, item in enumerate(sequence):
    sequence[i] = f(item)

Just write the obvious code to do it.

for i, item in enumerate(sequence):
    sequence[i] = f(item)
愚人国度 2024-09-12 04:52:09

您可以使用 lambda (或 def)或更好的列表理解(如果足够的话):

[ do_things_on_iterable for item in iterable ]

无论如何,如果事情变得过于复杂,您可能希望使用 for 循环更加明确。

例如,你可以做类似的事情,但恕我直言,它很丑陋:

[ mylist.__setitem__(i,thing) for i,thing in enumerate(mylist) ]

You can use a lambda (or a def) or better list comprehension (if it is sufficient):

[ do_things_on_iterable for item in iterable ]

Anyway you may want to be more explicit with a for loop if the things become too much complex.

For example you can do something like, that but imho it's ugly:

[ mylist.__setitem__(i,thing) for i,thing in enumerate(mylist) ]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文